DateTime.ToString () format yang dapat digunakan dalam nama file atau ekstensi?

100

Saya ingin menambahkan stempel waktu ke nama file saat file dibuat tetapi sebagian besar metode DateTime saya telah mencoba menghasilkan sesuatu dengan spasi dan garis miring. Misalnya:

Debug.WriteLine(DateTime.Now.ToString()); // <-- 9/19/2012 1:41:46 PM
Debug.WriteLine(DateTime.Now.ToShortTimeString()); // <-- 1:41 PM
Debug.WriteLine(DateTime.Now.ToShortDateString()); // <-- 9/19/2012
Debug.WriteLine(DateTime.Now.ToFileTime()); // <-- 129925501061462806

ToFileTime()berfungsi tetapi tidak sepenuhnya dapat dibaca manusia. Bagaimana cara memformat keluaran ke stempel waktu yang dapat dibaca manusia dengan tanggal dan waktu yang dapat digunakan dalam nama file atau ekstensi? Lebih suka sesuatu seperti 2011-19-9--13-45-30?

pdizz
sumber
2
Bagaimana dengan ini ... DateTime.Now.ToString ("yyyy-MM-dd - hh-mm-ss")
Gen S

Jawaban:

177

Anda dapat menggunakan ini:

DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss");
Kristof Claes
sumber
5
Anda dapat melihat lebih banyak contoh / opsi di sini: geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm
Kristof Claes
1
Saya kira mengingat waktu utc akan lebih baik
RealSteel
89
Apakah Anda serius menyarankan untuk memiliki hari antara tahun dan bulan ??
kjbartel
10
Bahkan lebih dapat dimaafkan dalam nama file karena daftar file tidak dapat diurutkan berdasarkan nama untuk mendapatkan mereka dalam urutan waktu tanggal. Paling penting hingga paling tidak signifikan harus menjadi urutan hari ini.
Bernhard Hofmann
4
@Matt - Anda menganggap nama file terkait dengan tanggal dibuat / diubah / diakses yang tidak selalu.
Bernhard Hofmann
121

Saya akan menggunakan format ISO 8601 , tanpa pemisah:

DateTime.Now.ToString("yyyyMMddTHHmmss")
Christoffer Lette
sumber
7
Jika Anda menggunakan DateTime.Now.ToString("o"), itu akan memberi Anda yyyy-MM-ddTHH:mm:ss.fffffff-HH:mm(di mana offset jam dan menit terakhir adalah +/- GMT). Memang, ini tidak akan berfungsi sebagai format nama file, tetapi "o"pemformatannya baik untuk diketahui.
krillgar
16

Saya memiliki situasi yang serupa tetapi saya ingin cara yang konsisten untuk dapat menggunakan DateTime.Parse dari nama file juga, jadi saya menggunakan

DateTime.Now.ToString("s").Replace(":", ".") // <-- 2016-10-25T16.50.35

Jika saya ingin mengurai, saya cukup membalikkan panggilan Ganti. Dengan cara ini saya tidak perlu mengetikkan hal yymmdd atau menebak format apa yang diizinkan DateTime.Parse.

Gabe Haack
sumber
8

Daftar di bawah ini dari penentu format waktu yang paling umum digunakan.,

hh - hari dalam sebulan, dari 01 sampai 31.

MM - bulan , dari 01 sampai 12.

yyyy - tahun sebagai angka empat digit.

jj - jam , menggunakan format 12-jam dari 01 hingga 12.

mm - menit , dari 00 hingga 59.

ss - detik , dari 00 hingga 59.

HH - jam , menggunakan format 24 jam dari 00 hingga 23.

tt -penanda AM / PM .

Dengan menggunakan cara di atas, Anda akan dapat membuat nama unik untuk nama file Anda.

Disini saya telah memberikan contoh

string fileName = "fileName_" + DateTime.Now.ToString("MM-dd-yyyy_hh-mm-ss-tt") + ".pdf";

ATAU

Jika Anda tidak lebih suka menggunakan simbol, Anda dapat mencoba ini juga.,

string fileName = "fileName_" + DateTime.Now.ToString("MMddyyyyhhmmsstt") + ".pdf";

Semoga ini bisa membantu seseorang sekarang atau di masa depan. :)

RajeshKdev
sumber
7

Secara pribadi saya suka seperti ini:

DateTime.Now.ToString("yyyy-MM-dd HH.mm.ss")

Karena yang membedakan antara tanggal dan waktu.

Charles Clayton
sumber
1
Saya kira yang Anda maksud adalah "yyyy-MM-hh HH.mm.ss"
Filimindji
3

Anda bisa mencoba dengan

var result = DateTime.Now.ToString("yyyy-MM-d--HH-mm-ss");
Aghilas Yakoub
sumber
3

Menggunakan string interpolasi & penentu format :

var filename = $"{DateTime.Now:yyyy.dd.M HH-mm-ss}"

Atau jika Anda tidak berada di Amerika:

var filename = $"{DateTime.Now:yyyy.M.dd HH-mm-ss}"

Fitur ini tersedia di C # 6 dan versi bahasa yang lebih baru.

Ceker ayam
sumber
2

Anda dapat membuat jalur untuk file Anda seperti di bawah ini:

string path = "fileName-"+DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ".txt";
rouhollah ghasempour
sumber