Đây là một câu hỏi hơi chủ quan, và không quan trọng lắm trong kế hoạch lớn của mọi thứ, nhưng có điều gì đó làm tôi khó chịu thường xuyên. Dường như không có cách nào rõ ràng để đặt dấu thời gian vào tên tệp .
Vấn đề khách quan là dấu thời gian trong tên tệp phải có thể sắp xếp được . Nhưng các định dạng ngày có thể sắp xếp .NET như "s" ( "yyyy-MM-ddTHH:mm:ss"
) và "u" ( "yyyy-MM-dd HH:mm:ssZ"
) không hợp lệ trong tên tệp vì các ký tự ':'.
Một điều khác là bạn sẽ dễ dàng xem giờ quốc tế hay giờ địa phương được sử dụng. Trên thực tế, người dùng có vẻ thích giờ địa phương hơn giờ quốc tế.
Tôi hầu như đã kết thúc bằng cách sử dụng ISO 8601 với định dạng thời gian cơ bản:
- Chuỗi định dạng giờ địa phương
"yyyy-MM-ddTHHmmsszz"
- Chuỗi định dạng UTC
"yyyy-MM-ddTHHmmssZ"
Ở các định dạng này, giờ địa phương hiện tại của tôi sẽ là "2009-08-08T151800+03"
và UTC"2009-08-08T121800Z"
Bạn cũng có thể tự động phát hiện DateTime.Kind bằng "K" và sử dụng "yyyy-MM-ddTHHmmssK"
, nhưng sau đó bạn sẽ phải thay thế các ký tự ':'.
Bất cứ một đề nghị nào khác?
Chỉnh sửa: Một vài ghi chú cho đến nay:
Giờ địa phương + định dạng múi giờ "yyyy-MM-ddTHHmmsszz"
không còn có thể sắp xếp được nếu có liên quan đến nhiều múi giờ. Trong hầu hết các trường hợp, bạn nên bỏ thông tin múi giờ nếu nó thừa và sử dụng UTC nếu không.
Một điều nữa là UTC phải luôn được đánh dấu bằng 'Z', 'GMT' hoặc 'UTC' để tránh phỏng đoán và nhầm lẫn.
Ngày Julian và khác stardate là mát mẻ bởi vì ngày số học với lịch Gregorian là braindead.