นี่เป็นคำถามที่ค่อนข้างเป็นส่วนตัวและไม่สำคัญมากนักในโครงการใหญ่ ๆ แต่เป็นสิ่งที่ทำให้ฉันรำคาญเป็นประจำ ดูเหมือนว่าจะไม่มีวิธีที่ชัดเจนในตัวเองที่จะนำการประทับเวลาในชื่อไฟล์
ปัญหาวัตถุประสงค์คือการประทับเวลาในชื่อไฟล์ควรจัดเรียงได้ แต่รูปแบบวันที่ที่จัดเรียงได้ของ. NET เช่น"s" ( "yyyy-MM-ddTHH:mm:ss"
) และ"u" ( "yyyy-MM-dd HH:mm:ssZ"
) ไม่ถูกต้องในชื่อไฟล์เนื่องจากอักขระ ":"
สิ่งอื่นคือคุณควรดูว่ามีการใช้เวลาสากลหรือเวลาท้องถิ่น ในทางปฏิบัติดูเหมือนว่าผู้ใช้จะชอบเวลาท้องถิ่นมากกว่าเวลาสากล
ฉันได้ใช้ISO 8601เป็นส่วนใหญ่ด้วยรูปแบบเวลาพื้นฐาน:
- สตริงรูปแบบเวลาท้องถิ่น
"yyyy-MM-ddTHHmmsszz"
- สตริงรูปแบบ UTC
"yyyy-MM-ddTHHmmssZ"
ในรูปแบบเหล่านี้เวลาท้องถิ่นปัจจุบันของฉันจะเป็น"2009-08-08T151800+03"
และ UTC"2009-08-08T121800Z"
คุณยังสามารถตรวจจับ DateTime.Kind โดยอัตโนมัติด้วย"K"และใช้"yyyy-MM-ddTHHmmssK"
แต่คุณจะต้องแทนที่อักขระ ":"
ข้อเสนอแนะอื่น ๆ ?
แก้ไข:บันทึกบางส่วนจนถึงตอนนี้:
เวลาท้องถิ่น + รูปแบบเขตเวลา"yyyy-MM-ddTHHmmsszz"
จะไม่สามารถจัดเรียงได้อีกต่อไปหากเกี่ยวข้องกับเขตเวลาหลายเขต ในกรณีส่วนใหญ่ควรปล่อยข้อมูลเขตเวลาหากซ้ำซ้อนและใช้ UTC เป็นอย่างอื่น
อีกประการหนึ่งคือ UTC ควรมีเครื่องหมาย 'Z', 'GMT' หรือ 'UTC' เสมอเพื่อป้องกันการคาดเดาและความผิดพลาด
วันที่ของจูเลียนและดาราคนอื่น ๆนั้นยอดเยี่ยมเพราะการคำนวณวันที่ด้วยปฏิทินเกรกอเรียนเป็นแบบ Braindead