ในเว็บไซต์ของฉันผู้ใช้ป้อนวันเดือนปีเกิดในรูปแบบxx.xx.xx
- ตัวเลขสองหลักสามตัวคั่นด้วยจุด น่าเสียดายที่ฉันลืมบอกผู้ใช้ว่าต้องใช้รูปแบบใด ทั้งหมดที่ฉันรู้คือส่วนหนึ่งใช้สำหรับเดือนหนึ่งสำหรับวันที่และอีกหนึ่งสำหรับปี ปีแน่นอนในศตวรรษที่ 20 (1900-1999) ดังนั้นรูปแบบวิธีการ31.05.75
31 May 1975
นอกจากนี้ฉันสมมติว่าทุกคนใช้ปฏิทินเกรโกเรียนหรือจูเลียน
ตอนนี้ฉันต้องการผ่านฐานข้อมูลของฉันเพื่อล้างความยุ่งเหยิง ฉันต้องการเริ่มต้นด้วยการจัดการกับผู้ใช้ที่มีวันที่คลุมเครือมากที่สุดนั่นคือผู้ที่ช่วงวันที่เป็นไปได้ที่ใหญ่ที่สุด
ตัวอย่างเช่นวันที่08.27.53
หมายถึง27 August 1953
ในปฏิทิน Gregorian หรือ Julian วันที่ในปฏิทินจูเลียนเป็น 13 13 days
วันในภายหลังดังนั้นช่วงเป็นเพียง
ในทางตรงกันข้ามสัญกรณ์01.05.12
สามารถอ้างถึงวันที่เป็นไปได้มากมาย เร็วที่สุดเท่าที่เป็นและล่าสุดคือ12 May 1901 (Gregorian)
ช่วงคือ1 May 1912 (Julian)
4020 days
กฎระเบียบ
- อินพุตเป็นสตริงในรูปแบบ
xx.xx.xx
โดยที่แต่ละฟิลด์เป็นตัวเลขสองหลักและไม่มีการเติมเบาะ - เอาต์พุตคือจำนวนวันในช่วง
- คุณสามารถสันนิษฐานได้ว่าอินพุตจะเป็นวันที่ที่ถูกต้องเสมอ
- คุณไม่สามารถใช้ฟังก์ชันวันที่หรือปฏิทินในตัว
- รหัสที่สั้นที่สุด (เป็นไบต์) ชนะ
Testcases
01.00.31
=>12
29.00.02
=>0
(ความเป็นไปได้เพียงอย่างเดียวคือ29 February 1900 (Julian)
)04.30.00
=>13
06.12.15
=>3291
5, May 1975
ควรจะเป็น31st
? นอกจากนี้เราต้องพิจารณาเป็นปีอธิกสุรทินด้วยหรือไม่