同じディレクトリに同じファイルの複数のバージョンを持ちたいと思うこの問題に何度か遭遇しました。 C#を使用してこれを行っている方法は、このDateTime.Now.ToString().Replace('/', '-').Replace(':', '.')
のようなものを使用してファイル名にタイムスタンプを追加することです。これを行うためのより良い方法はありますか?
DateTime.ToString Method(String) を使用できます
DateTime.Now.ToString("yyyyMMddHHmmssfff")
または string.Format
string.Format("{0:yyyy-MM-dd_hh-mm-ss-fff}",DateTime.Now)
;
または 補間された文字列
$"{DateTime.Now:yyyy-MM-dd_hh-mm-ss-fff}"
次のカスタム形式指定子がありますy(年)、M(月)、d(日)、h(12時間)、H(24時間)、m(分)、s(秒)、f(秒の小数部)、F (2番目の小数部、末尾のゼロはトリミングされます)、t(PMまたはAM)およびz(タイムゾーン)。
拡張方法あり
使用法:
string result = "myfile.txt".AppendTimeStamp();
//myfile20130604234625642.txt
拡張方法
public static class MyExtensions
{
public static string AppendTimeStamp(this string fileName)
{
return string.Concat(
Path.GetFileNameWithoutExtension(fileName),
DateTime.Now.ToString("yyyyMMddHHmmssfff"),
Path.GetExtension(fileName)
);
}
}
私は使用したい:
string result = "myFile_" + DateTime.Now.ToFileTime() + ".txt";
ToFileTime()は何をしますか?
現在のDateTimeオブジェクトの値をWindowsファイル時間に変換します。
public long ToFileTime()
Windowsファイル時間は、西暦1601年1月1日午前0時(西暦)協定世界時(UTC)から経過した100ナノ秒間隔の数を表す64ビット値です。 Windowsは、ファイル時間を使用して、アプリケーションがファイルを作成、アクセス、またはファイルに書き込むタイミングを記録します。
おそらく、代わりにDateTime.Now.Ticks
を追加すると、3つの文字列を作成せず、ティック値も常に一意になるため、少し速くなります。
使用できます:
Stopwatch.GetTimestamp();
代わりに以下を使用できます。
DateTime.Now.Ticks