将时间戳附加到文件名
我已经多次遇到这个问题,我希望在同一目录中拥有同一文件的多个版本。我使用 C# 的方法是在文件名中添加时间戳,类似于 DateTime.Now.ToString().Replace('/', '-').Replace(':' ,'.')。 有更好的方法吗?
I have come across this problem several times in which I would like to have multiple versions of the same file in the same directory. The way I have been doing it using C# is by adding a time stamp to the file name with something like this DateTime.Now.ToString().Replace('/', '-').Replace(':', '.')
.
Is there a better way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(6)
我更喜欢使用:
string result = "myFile_" + DateTime.Now.ToFileTime() + ".txt";
ToFileTime() 做什么?
将当前 DateTime 对象的值转换为 Windows 文件时间。
公共长ToFileTime()
Windows 文件时间是一个 64 位值,表示自 1601 年 1 月 1 日午夜 12:00 AD (CE) 协调世界时 (UTC) 以来经过的 100 纳秒间隔数。 Windows 使用文件时间来记录应用程序创建、访问或写入文件的时间。
在 maf-soft 的答案的帮助下,我创建了自己的解决方案,它也可以处理 Pathes。
所以这些是我使用的单元测试:
Assert.Test(new MyPathTools().AppendTimeStamp(@"AnyFile.pdf", new FakeMyDateTime("15.2.2021 15:23:17")),
@"AnyFile20210215152317.pdf");
Assert.Test(new MyPathTools().AppendTimeStamp(@"C:\Temp\Test\", new FakeMyDateTime("15.2.2021 15:23:17")),
@"C:\Temp\Test\20210215152317");
Assert.Test(new MyPathTools().AppendTimeStamp(@"C:\Temp\Test\AnyFile.pdf", new FakeMyDateTime("15.2.2021 15:23:17")),
@"C:\Temp\Test\AnyFile20210215152317.pdf");
代码(用于复制和粘贴)如下所示:
public class MyPathTools
{
public string AppendTimeStamp(string fileName)
{
return Path.Combine(Path.GetDirectoryName(fileName), string.Concat(Path.GetFileNameWithoutExtension(fileName),
DateTime.Now.ToString("yyyyMMddHHmmss"),
Path.GetExtension(fileName))
);
}
}
与我的框架一起使用的代码(并且是可单元测试的)如下所示:
public class MyPathTools : IMyPathTools
{
public string AppendTimeStamp(string fileName, IMyDateTime myDateTime)
{
return Path.Combine(Path.GetDirectoryName(fileName), string.Concat(Path.GetFileNameWithoutExtension(fileName),
myDateTime.Now.ToString("yyyyMMddHHmmss"),
Path.GetExtension(fileName))
);
}
}
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
您可以使用 DateTime.ToString 方法(字符串)
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}”
使用扩展方法
用法:
扩展方法
You can use DateTime.ToString Method (String)
DateTime.Now.ToString("yyyyMMddHHmmssfff")
or string.Format
string.Format("{0:yyyy-MM-dd_HH-mm-ss-fff}", DateTime.Now)
;or Interpolated Strings
$"{DateTime.Now:yyyy-MM-dd_HH-mm-ss-fff}"
With Extension Method
Usage:
Extension method