文件名中您最喜欢的日期和时间格式是什么?

这是一个有点主观的问题,并不是很重要的大计划的事情,但有些东西,但仍然困扰我定期。似乎没有一个不言自明的方式来把 timestamp in a file name

目标问题是文件名中的时间戳应该是 分类。但是。NET 可排序日期格式如 "s"("yyyy-MM-ddTHH:mm:ss")和 “ u”("yyyy-MM-dd HH:mm:ssZ")在文件名中无效,因为’:’字符。

另外,您应该很容易看到是否使用了 普遍时间或当地时间。 实际上,用户似乎更喜欢本地时间而不是通用时间。

我最终大部分使用的是带有基本时间格式的 ISO 8601:

  • 本地时间格式字符串 "yyyy-MM-ddTHHmmsszz"
  • 格式字符串

在这些格式中,我当前的本地时间是 "2009-08-08T151800+03"和 UTC"2009-08-08T121800Z"

还可以自动检测日期时间。类似于 “ K”并使用 "yyyy-MM-ddTHHmmssK",但是您必须替换’:’字符。

还有别的建议吗?

编辑: 到目前为止的一些注释:

local time + time zone format "yyyy-MM-ddTHHmmsszz" is no longer sortable if multiple time zones are involved. In most cases it would make sense to drop the time zone info if it is redundant, and use UTC otherwise.

另外,UTC 应该总是标上“ Z”、“ GMT”或“ UTC”,以防止猜测和错误。

儒略日期 和其他 星历是很酷的,因为用 公历进行日期算术是脑死亡的。

82227 次浏览

对于文件名,我会使用 YYYY-MM-DD HHmmss,除非特别需要时区,或者可能需要将它们解析为 ISO 日期; 在这种情况下,ISO 日期可能更好。

编辑: 时区不应该是必需的; 以 UTC 格式保存所有内容并让人们知道所有内容都是 UTC 格式比指定所有内容的时区效率更高。

我用这个:

My-File--2009-12-31--23-59-59.txt
  • No spaces
  • 双破折号,以分开的部分,使每个部分容易看到
  • 只有一个标点符号(破折号) ,便于输入
  • 没有时区,因为对我来说,我总是在我的本地时区工作; 如果我需要一个,我会去与 UTC 和后面的时间“ --UTC”。

通常我使用 yyyymmdd。如果需要进一步的精度,它更改为 yyyymmddhmss

我使用 unix 时间戳,例如从一个纪元过去多少秒。所有时间以 UTC 表示。 但是如果您愿意,可以在 w/timezone 数据前面加上前缀。

时间戳是否需要人类可读?如果没有,你可以使用 DateTime.Ticks.ToString()。非常准确,可分类,没有特殊字符。

以下是我使用的方法:

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();
}

It takes a date and description. Let's use "I like DOGS". Results in:

ILikeDogs_1999-09-23_18-42