这在某种程度上是一个主观的问题,在大计划中并不是很重要,但它仍然经常困扰着我。似乎没有一种不言而喻的方法可以在文件名中添加时间戳。
目标问题是文件名中的时间戳应该是可排序的。但是像"s" ("yyyy-MM-ddTHH:mm:ss"
)和"u" ("yyyy-MM-dd HH:mm:ssZ"
)这样的.NET可排序日期格式在文件名中是无效的,因为有':‘字符。
另一件事是,您应该很容易看到是使用通用时间还是使用本地时间。实际上,用户似乎更喜欢本地时间而不是世界时。
我主要是使用基本时间格式的ISO 8601:
"yyyy-MM-ddTHHmmsszz"
"yyyy-MM-ddTHHmmssZ"
在这些格式中,我当前的本地时间是"2009-08-08T151800+03"
和UTC "2009-08-08T121800Z"
您也可以使用"K"自动检测DateTime.Kind并使用"yyyy-MM-ddTHHmmssK"
,但之后您必须替换':‘字符。
还有其他建议吗?
编辑:到目前为止有几个注意事项:
如果涉及多个时区,则本地时间+时区格式"yyyy-MM-ddTHHmmsszz"
不再可排序。在大多数情况下,如果时区信息是多余的,则删除它是有意义的,否则使用UTC。
另一件事是UTC应该总是用'Z','GMT‘或'UTC’来标记,以防止猜测和错误。
Julian dates和其他stardates很酷,因为gregorian calendar的日期算法很容易理解。
发布于 2009-08-08 12:45:27
我使用的是:
My-File--2009-12-31--23-59-59.txt
--UTC
“。<代码>H210<代码>F211发布于 2009-08-08 12:29:19
我会使用YYYY-MM-DD HHmmss
作为文件名,除非对时区有特殊的需要,或者可能需要将它们解析为ISO日期;在这些情况下,ISO日期可能更好。
编辑:不应该真的需要时区;以协调时保存所有内容,并让人们知道所有内容都是协调时的,这比指定所有内容的时区更有效率。
发布于 2013-01-23 23:50:44
下面是我使用的代码:
private static string CreateMeaningfulFileName(string friendlyName, DateTime date)
{
StringBuilder sb = new StringBuilder();
foreach (string s in friendlyName.Split(new char[] { ' ' }))//remove spaces
{
sb.Append(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(s.ToLower()));//capitalize each segment
}
sb.Append("_" + date.ToString("yyyy-MM-dd_HH-mm"));//add date
return sb.ToString();
}
它需要一个日期和描述。让我们使用"I like DOGS"
。结果如下:
ILikeDogs_1999-09-23_18-42
https://stackoverflow.com/questions/1248747
复制相似问题