ファイルの作成時にファイル名にタイムスタンプを追加したいのですが、ほとんどの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
のようなものが望ましいですか?
これを使用できます:
DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss");
ISO 8601 形式を使用し、区切り文字は使用しません。
DateTime.Now.ToString("yyyyMMddTHHmmss")
私は同様の状況を持っていますが、ファイル名からもDateTime.Parseを使用できるようにするための一貫した方法が欲しいので、私は
DateTime.Now.ToString("s").Replace(":", ".") // <-- 2016-10-25T16.50.35
解析したいときは、単にReplace呼び出しを逆にすることができます。このように、yymmddを入力したり、DateTime.Parseが許可する形式を推測したりする必要はありません。
以下に、最も一般的に使用される時刻形式指定子のリストを示します。
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";
これが現在または将来誰かに役立つことを願っています。 :)
個人的に私はこの方法が好きです:
DateTime.Now.ToString("yyyy-MM-dd HH.mm.ss")
日付と時刻を区別するためです。
試すことができます
var result = DateTime.Now.ToString("yyyy-MM-d--HH-mm-ss");
以下のようにファイルのパスを作成できます。
string path = "fileName-"+DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ".txt";