เมื่อคิดถึงวันที่และเวลา - เที่ยงคืนของวันนี้ในอดีตหรืออนาคต


9

นี่เป็นปริศนาสำหรับฉันเสมอและฉันตระหนักดีว่าไม่ใช่ปัญหาในการเขียนโปรแกรมหรือการพัฒนาซอฟต์แวร์ แต่ก็ดูเหมือนจะเป็นเรื่องธรรมดาที่สมเหตุสมผลในสาขาของเรา

ตัวอย่างเช่นหากฉันต้องตั้งค่าวันหมดอายุเป็น 2011-04-08 00:00:00 - และเวลาท้องถิ่นปัจจุบันของฉันคือ 10:45 ในวันที่ 8 - ฉันหมดอายุไปแล้วหรือยัง หรือฉันยังเหลือครึ่งวันหรือมากกว่านั้น?

มีมาตรฐานสากลที่จุดสิ้นสุดของเที่ยงคืนของวันหรือไม่

หรือฉันควรจะออกจากกองทัพอังกฤษและบอกว่าวันนั้นจะสิ้นสุดในเวลา 23:59:59 น. และเริ่มเวลา 00:00:01 และไม่มีเที่ยงคืน?


รออยู่ตำแหน่งของคุณอยู่ที่ไหน ตอนนี้วันที่เท่าไหร่? 08 หรือ 07
Sufendy

sry - ทำให้ชัดเจนว่าฉันอยู่ในวันที่ 8 (ฉันอยู่ในแอดิเลด, SA)
HorusKol

1
โดยทั่วไปคุณถามว่า 00:00:00 เล็กกว่าหรือใหญ่กว่า 10:45:00 น
Martin York

ฉันจะเอาใบไม้ องค์กรจำนวนมากที่จัดการกับตารางเวลาหลีกเลี่ยง 00:00:00 (และ 12:00:00) นอกจากนี้ยังมีความสับสนเกี่ยวกับนักออกแบบ AM / PM สำหรับประเทศเหล่านั้นที่ไม่ใช้นาฬิกา 24 ชั่วโมง
dbasnett

ในบางบริบท24:00:00ใช้เพื่ออธิบายเที่ยงคืนในตอนท้ายของวัน
CodesInChaos

คำตอบ:


17

ฉันคิดว่าในการเขียนโปรแกรม (oracle และ php ไม่แน่ใจว่า 'การแข่งขันภาษาอื่น ๆ ) เที่ยงคืนเป็นจุดเริ่มต้นของวัน ตัวอย่างเช่นหากคุณตัดทอน (sysdate) คุณจะได้รับ 2011-04-08 00:00:00 ซึ่งเป็นอดีตของเรา

ดังนั้นเมื่อนาฬิกาเปลี่ยนจาก 23:59:59 เป็น 00:00:00 วันที่จะเปลี่ยนจาก 2011-04-08 เป็น 2011-04-09


2
ใช่วันกลิ้งไปตอนเที่ยงคืนซึ่งคือ 00:00:00
quick_now

นี่คือ AFAIK ที่ถูกต้อง ความสับสนอย่างหนึ่งอาจเป็นไปได้ว่าในคำพูดธรรมดา "เที่ยงคืนวันนี้" อาจหมายถึงเที่ยงคืนในตอนท้ายของวันนี้เพราะนั่นมีแนวโน้มที่จะเป็นก่อนที่ผู้คนจะเข้านอนมากกว่าที่จะตื่นขึ้นมา
Jack V.

3

ภาคผนวกของคำตอบ @Phelios หากคุณมีเวลาเช่น 00:00:00 นี่ไม่จำเป็นต้องเที่ยงคืนแน่นอน ค่อนข้างเป็นชุดของจุดที่มีขนาดใหญ่ในเวลาที่ทุกคนมีระยะทางสูงสุด <1 วินาทีซึ่งกันและกัน ตัวอย่างเช่นทั้งหมด 00: 00: 00.345, 00: 00: 00.567 และ 00: 00: 00.842 อยู่บนฝั่งเที่ยงวันใหม่อย่างชัดเจน แต่จะถูกย่อให้เป็น "00:00:00" เพื่อจุดประสงค์ในการแสดงผล ในทำนองเดียวกัน 23: 59: 59: 899 ตั้งอยู่บนฝั่งตะวันตกของเที่ยงคืน ดังนั้นเวลาเที่ยงคืนจึงเป็นช่วงเวลาสั้น ๆ อย่างไม่ จำกัด ระหว่างวันที่คุณจะไม่มีวันได้ซ้อม


นี่เป็นครั้งเดียวที่มีความสำคัญในการเรียกความแตกต่างระหว่างทฤษฎีและการปฏิบัติที่ 'ถูกกล่าวหา' : ในทางปฏิบัติผู้ใช้ที่พิมพ์วันที่ / เวลาแทบจะไม่สามารถพิมพ์วินาทีได้ มิลลิวินาทีเพียงอย่างเดียว ในการฝึกอุปกรณ์จับเวลาที่กำหนดเวลาของเหตุการณ์อาจไม่สนับสนุนมิลลิวินาที ในทางปฏิบัติแม้ว่าอุปกรณ์จับเวลาจะสนับสนุนมิลลิวินาทีไม่รับประกันว่ารูปแบบการจัดเก็บจะไม่ปัดเศษ / ตัดส่วนเวลาด้วยเหตุผลบางอย่าง
ไม่แยแส

1

นี่เป็นปัญหาที่คล้ายกันกับการคำนวณความแตกต่างระหว่างมุมโดยใช้รูปทรงเรขาคณิตแบบวงกลมซึ่งตัวอย่างเช่น 0 องศาและ 360 องศา (และ 720 องศา ฯลฯ ) เหมือนกันทั้งหมด แล้วอะไรคือความแตกต่างระหว่าง 350 องศากับ 10 องศา?

คำตอบ: ขึ้นอยู่กับว่าคุณต้องการวัดด้วยวิธีไหน - ซึ่งอาจเป็น 20 องศาหรือ 340 องศา แต่การคำนวณความแตกต่างเชิงมุมจริงๆแล้วค่อนข้างยุ่ง Calcs ต่างเวลาจะยุ่งเหมือนกันเว้นแต่ว่าคุณแปลงเป็นรูปแบบภายในที่ทำให้การบวกและการลบแบบธรรมดาทำงานได้ตามปกติ หรือคุณใช้ห้องสมุดคลาสที่ทันสมัยอย่างน่าอัศจรรย์ซ่อนมันไว้ให้ห่างจากคุณ (และไม่เคยสอนใครเกี่ยวกับรายละเอียดที่แท้จริง)


ในทั้งสองกรณีคุณระบุเพียงทางเดียวรอบนาฬิกา (หรือวงกลม) เป็น 'บวก'
HorusKol

จริง อย่างไรก็ตามการเขียนรหัสเพื่อคำนวณและทำให้ถูกต้องทุกครั้งต้องใช้ความคิดเล็กน้อย
quick_now
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.