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?


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");

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")

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.


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. :)


7

Secara pribadi saya suka seperti ini:

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

Karena yang membedakan antara tanggal dan waktu.


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");

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.


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";
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.