web-dev-qa-db-ja.com

ファイル名または拡張子で使用できるDateTime.ToString()形式?

ファイルの作成時にファイル名にタイムスタンプを追加したいのですが、ほとんどのDateTimeメソッドはスペースとスラッシュを使用して出力しようとしました。例えば:

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()は機能しますが、人間が読むことはできません。ファイル名または拡張子で使用できる日付と時刻を含む人間が読めるタイムスタンプに出力をフォーマットするにはどうすればよいですか? 2011-19-9--13-45-30のようなものが望ましいですか?

85
pdizz

これを使用できます:

DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss");
154
Kristof Claes

ISO 8601 形式を使用し、区切り文字は使用しません。

DateTime.Now.ToString("yyyyMMddTHHmmss")
89

私は同様の状況を持っていますが、ファイル名からもDateTime.Parseを使用できるようにするための一貫した方法が欲しいので、私は

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

解析したいときは、単にReplace呼び出しを逆にすることができます。このように、yymmddを入力したり、DateTime.Parseが許可する形式を推測したりする必要はありません。

12
Gabe Haack

以下に、最も一般的に使用される時刻形式指定子のリストを示します。

dd - day 月、 01から31まで。

MM- month 、from 01から12。

yyyy - year として桁数。

hh - hour 01から12までの12時間クロック。

mm - minute 、00から59。

ss - second 、00から59。

HH- hour 、使用00から23の24時間制クロック.

tt - AM/PM 指定子。

上記を使用して、ファイル名に一意の名前を付けることができます。

ここで例を提供しました

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

または

シンボルを使用したくない場合は、これも試してください。

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

これが現在または将来誰かに役立つことを願っています。 :)

6
RajeshKdev

個人的に私はこの方法が好きです:

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

日付と時刻を区別するためです。

5
Charles Clayton

試すことができます

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

以下のようにファイルのパスを作成できます。

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

補間 文字列& 形式指定子 を使用:

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

または、アメリカにいない場合:

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

この機能は、C#6以降のバージョンの言語で使用できます。

1
ChickenFeet