Ini adalah pertanyaan yang agak subjektif, dan tidak terlalu penting dalam skema besar, tetapi sesuatu yang mengganggu saya secara teratur. Tampaknya tidak ada cara yang jelas untuk menjelaskan a stempel waktu di nama file .
Masalah obyektif adalah bahwa stempel waktu dalam nama file harus dapat diurutkan . Tetapi format tanggal .NET yang dapat diurutkan seperti "s" ( "yyyy-MM-ddTHH:mm:ss"
) dan "u" ( "yyyy-MM-dd HH:mm:ssZ"
) tidak valid dalam nama file karena karakter ':'.
Hal lainnya adalah Anda harus dengan mudah melihat apakah waktu universal atau lokal digunakan. Secara praktis, pengguna tampaknya lebih menyukai waktu lokal daripada waktu universal.
Saya sebagian besar akhirnya menggunakan ISO 8601 dengan format waktu dasar:
- String format waktu lokal
"yyyy-MM-ddTHHmmsszz"
- String format UTC
"yyyy-MM-ddTHHmmssZ"
Dalam format ini, waktu lokal saya saat ini adalah "2009-08-08T151800+03"
dan UTC"2009-08-08T121800Z"
Anda juga dapat mendeteksi DateTime.Kind secara otomatis dengan "K" dan menggunakan "yyyy-MM-ddTHHmmssK"
, tetapi Anda harus mengganti karakter ':'.
Ada saran lain?
Edit: Beberapa catatan sejauh ini:
format zona waktu + waktu lokal "yyyy-MM-ddTHHmmsszz"
tidak lagi dapat diurutkan jika melibatkan beberapa zona waktu. Dalam kebanyakan kasus, akan masuk akal untuk membuang info zona waktu jika itu berlebihan, dan menggunakan UTC jika tidak.
Hal lain adalah bahwa UTC harus selalu ditandai dengan 'Z', 'GMT' atau 'UTC' untuk mencegah dugaan dan kesalahan.
Tanggal Julian dan lainnya Tanggal bintang yang keren karena tanggal aritmatika dengan kalender Gregorian adalah braindead.
Jawaban:
Saya menggunakan ini:
My-File--2009-12-31--23-59-59.txt
--UTC
" setelah waktunya.sumber
_
) daripada tanda hubung ganda untuk memisahkan potongan. (mis.My-File_2009-12-31_23-59-59.txt
)name_-_2019-11-04--15-04-36.642621403_-_2019-11-04--15-04-36.642622803.ext
ok untuk shell Linux. Tidak ada zona waktu, tapi dengan presisi nanodetik.Saya akan menggunakan
YYYY-MM-DD HHmmss
untuk nama file, kecuali jika ada kebutuhan khusus untuk zona waktu atau kemungkinan kebutuhan untuk menguraikannya menjadi tanggal ISO; dalam kasus tersebut tanggal ISO mungkin lebih disukai.Sunting: Zona waktu seharusnya tidak pernah diperlukan; menyimpan semuanya di UTC dan memberi tahu orang-orang bahwa semua itu UTC lebih efisien daripada menentukan zona waktu semuanya.
sumber
T
, tetapi itu kurang alami saat Anda membacanya.Inilah yang saya gunakan:
private static string CreateMeaningfulFileName(string friendlyName, DateTime date) { StringBuilder sb = new StringBuilder(); foreach (string s in friendlyName.Split(new char[] { ' ' }))//remove spaces { sb.Append(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(s.ToLower()));//capitalize each segment } sb.Append("_" + date.ToString("yyyy-MM-dd_HH-mm"));//add date return sb.ToString(); }
Dibutuhkan tanggal dan deskripsi. Mari gunakan "Saya suka ANJING". Hasil dalam:
ILikeDogs_1999-09-23_18-42
sumber
Apakah ada persyaratan agar stempel waktu dapat dibaca manusia? Jika tidak, Anda bisa menggunakan DateTime.Ticks.ToString () . Sangat akurat, dapat diurutkan, dan tidak ada karakter khusus.
sumber
Biasanya saya menggunakan yyyymmdd. Jika presisi lebih lanjut diperlukan, itu berubah menjadi yyyymmddhhmmss
sumber
Saya menggunakan stempel waktu unix, misalnya. berapa detik berlalu dari zaman. Semua waktu dalam UTC. Tapi tebak Anda bisa mengawali dengan data zona waktu jika Anda mau.
sumber