"Standar" format untuk menggunakan cap waktu sebagai bagian dari nama file [ditutup]

85

Saya mencari format standar untuk menggunakan tanggal / waktu sebagai bagian dari nama file dan tidak dapat menemukan apa pun.

Pertanyaan saya adalah dua bagian:

Menggunakan perangko waktu untuk menegakkan keunikan dalam nama file praktik yang buruk?

Saya bisa mendapatkan waktu dari tanggal pembuatan dan membuat serial nama-nama file (file0001.bak, file0002.bak, dll) tetapi hanya termasuk cap waktu memungkinkan melakukan operasi file seperti mv 2011-01* somewhere/. Apakah ada kerugian menggunakan jenis sistem penamaan ini?

Format yang saya gunakan adalah YYYY-mm-dd_HH-MM-SS.

Apakah ada format yang lebih baik yang harus saya gunakan?

Dengan format ini apakah saya harus memperhatikan kompatibilitas sistem file, masalah str_to_date_parsing, dll?

Terima kasih!

sunting:

Saya mungkin ingin meninggalkan keluar menegakkan sedikit keunikan karena itu cadangan pembangkit single user menggunakan cronjob (ada tidak boleh ada masalah concurrency).

kriegar
sumber
9
Secara umum, saya hanya menggunakan YYYYmmddHHMMSS, maka dapat diurutkan / disaring secara numerik atau leksikal.
Orbling
Saya menggunakan "yyyy mmdd hhmm". Perusahaan saya memiliki jangkauan global, jadi saya cap waktu menggunakan GMT. Jadi ketika saya menulis ini, itu akan menjadi "2011 0325 0245", karena itulah waktu di London sekarang (dan mereka masih pada waktu standar saat ini). Jika saya ingin menentukan dalam waktu lokal, yang merupakan Waktu Timur untuk saya, maka saya akan menggunakan "yyyy mmdd hhmm ET".
Mike Rosenblum
Saya menggunakan detik sejak Zaman sehingga saya tidak harus berurusan dengan zona waktu, tahun kabisat dan penghematan cahaya siang hari. Juga membuat matematika tanggal / waktu lebih mudah.
dietbuddha
2
Saya mengusulkan format berdasarkan ISO 8601 dalam sebuah posting di blog.xam.de/2016/07/... - akan membuat dunia kita lebih mudah, jika kita bisa menyetujui format :-)
Dr. Max Völkel

Jawaban:

62

Anda harus mempertimbangkan format ISO 8601 (2013-04-01T13: 01: 02). Ya ada standar untuk hal-hal ini. Titik dua dan tanda hubung dapat dihilangkan.

String format yang biasanya saya gunakan %Y%m%dT%H%M%Smenghasilkan 20130401T130102. Bergantung pada persyaratan, saya menghilangkan nilai dari kiri. Dalam skrip bash saya mendapatkan tanggal dengan garis seperti:

LOGDATE=$(date +%Y%m%dT%H%M%S)
BillThor
sumber
32
Titik dua pasti harus dihilangkan jika Anda menggunakan sistem Windows, karena mereka ilegal dalam nama file!
Carson63000
2
Bagi mereka yang menggunakan strftime, format string adalah"%Y-%m-%dT%H:%M:%S%z"
Alec Jacobson
6
Saya menggunakan YYYY-MM-DD-HHMMSS(saya mungkin menghilangkan SSdalam beberapa kasus). Bagian tanggal cukup mudah dibaca, dan bagian waktu cukup mudah dibaca untuk sebagian besar tujuan.
Keith Thompson
15
Standar atau tidak, "20130401T1301102" tidak sangat ramah pengguna. Mata saya sakit ketika saya melihat file log perangkat lunak dengan cap waktu semacam ini di namanya.
Zero3
1
2019.04.01-13.01.02.JPGatau nama-nama serupa (misalnya 190401-130102.JPG:) lebih baik untuk mata. @ Zero3
S.Serpooshan
4

Saya mencari format standar untuk menggunakan tanggal / waktu sebagai bagian dari nama file dan tidak dapat menemukan apa pun.

Pertanyaan saya adalah dua bagian:

Apakah menggunakan stempel waktu untuk menerapkan nama file unik merupakan praktik yang buruk?

Tidak apa-apa.

Saya bisa mendapatkan waktu dari tanggal pembuatan dan membuat serial nama-nama file (file0001.bak, file0002.bak, dll)

Memberi nomor secara berurutan lebih banyak pekerjaan. Pikirkan cap waktu sebagai penomoran yang meningkat tetapi tidak berurutan.

tetapi hanya termasuk cap waktu memungkinkan melakukan operasi file seperti mv 2011-01 * di suatu tempat /. Apakah ada kerugian menggunakan jenis sistem penamaan ini?

Tidak, ini dilakukan setiap saat.

Format yang saya gunakan adalah YYYY-mm-dd_HH-MM-SS.

Itu bagus, karena mereka akan mengurutkan dalam urutan kronologis. Saya akan kehilangan garis bawah, hanya karena lebih mudah mengetik tanda hubung.

Apakah ada format yang lebih baik yang harus saya gunakan?

Tidak juga.

kevin cline
sumber
2
Saya akan mengatakan "Gunakan format waktu standar ISO". Jadi, YYYY-mm-ddTHH: MM: SS (atau yyyymmddTHHMMSS).
Vatine
3

Itu tergantung pada aplikasi Anda. Terkadang cap waktu seperti yang Anda gambarkan dapat digunakan. Terkadang saat benturan nama menjadi masalah, Anda dapat menggunakan generator GUID .

grokus
sumber
2

Format yang Anda gunakan baik-baik saja tetapi jika Anda ingin keunikan dan waktu tidak memiliki arti lain, Anda mungkin memiliki masalah konkurensi dalam aplikasi Anda jika aplikasi tersebut digunakan oleh banyak pengguna dalam waktu yang sama dan semuanya menyebabkan file dibuat dalam waktu yang sama. map. Jika Anda hanya ingin keunikan, Anda dapat mempertimbangkan pembuatan GUID dan menghapus karakter yang tidak valid seperti kurung kurawal dan garis putus-putus dan menggunakannya sebagai nama file.

M.Sameer
sumber
-3

FBI memiliki masalah "tunggal" pengguna untuk membackup 100 juta sidik jari penangkapan kriminal yang mereka terima dari semua polisi di mana-mana ...

... mereka mulai dengan tanggal: yyyymmdd

Saya tidak tahu bagaimana mereka melanjutkan. Saya melanjutkan dengan hhmm dan bagi saya yang melakukannya.

Menggunakan GMT / Zulu terdengar seperti ide bagus untuk solusi global. Secara pribadi saya menggunakan ET, dan FBI "secara pribadi" menggunakan ET juga karena di situlah mereka berkantor pusat.

dave
sumber
3
Ini tidak menambah apa pun pada diskusi yang jauh lebih umum di posting lain, yang benar-benar menyentuh aspek-aspek seperti karakter hukum dan penyortiran dan keunikan.
Martijn Pieters