我搜索了将日期/时间用作文件名一部分的标准格式,但无法提供任何内容。

我的问题有两个部分:

使用时间戳来强制文件名唯一是一种不好的做法吗?

我可以从创建日期开始获取时间,并序列化文件名(file0001.bak,file0002.bak等),但是仅添加时间戳就可以执行诸如mv 2011-01* somewhere/之类的文件操作。使用这种类型的命名系统是否有缺点?

我使用的格式是YYYY-mm-dd_HH-MM-SS

我应该使用更好的格式吗?

我应该以这种格式关注文件系统兼容性,str_to_date_parsing问题等吗?

谢谢!

编辑:

由于单个用户使用cronjob生成备份,因此我可能想省略强制唯一性位(应该没有并发问题)。

评论

通常,我只使用YYYYmmddHHMMSS,然后可以按数字或词法对其进行排序/过滤。

我使用“ yyyy mmdd hhmm”。我的公司业务遍及全球,因此我使用GMT进行时间戳记。在我撰写本文时,它应该是“ 2011 0325 0245”,因为这是现在伦敦的时间(目前他们仍处于标准时间)。如果要在本地时间(对我来说是东部时间)指定时间,则可以使用“ yyyy mmdd hhmm ET”。

自大纪元以来,我使用秒数,因此无需处理时区,leap年和日光节约时间。也使日期/时间数学更容易。

另请参阅:serverfault.com/questions/292014/…

我在blog.xam.de/2016/07/…中的帖子中提出了一种基于ISO 8601的格式-如果我们可以同意一种格式的话,它将使我们的世界变得更加轻松:-)

#1 楼

您应该考虑使用ISO 8601格式(2013-04-01T13:01:02)。是的,这些东西都有标准。冒号和连字符可以省略。

我通常使用的格式字符串是%Y%m%dT%H%M%S,产生20130401T130102。根据要求,我忽略了左侧的值。在bash脚本中,我用类似以下一行的行获取日期:

LOGDATE=$(date +%Y%m%dT%H%M%S)


评论


如果您使用的是Windows系统,肯定必须省略冒号,因为它们在文件名中是非法的!

– Carson63000
2011-3-25在2:29

对于使用strftime的用户,格式字符串为“%Y-%m-%dT%H:%M:%S%z”

– Alec Jacobson
2013年12月12日14:52

我使用YYYY-MM-DD-HHMMSS(在某些情况下可能会省略SS)。日期部分可读性强,而时间部分对于大多数目的而言也足够可读。

–基思·汤普森(Keith Thompson)
2014年1月30日,下午1:23

是否为标准,“ 20130401T1301102”不是非常用户友好。当我看到名称中带有此类时间戳的软件日志文件时,我的眼睛受伤了。

–Zero3
15年6月13日在14:28

2019.04.01-13.01.02.JPG或类似名称(例如:190401-130102.JPG)对眼睛来说更好。 @零3

– S.Serpooshan
19年6月22日在9:22

#2 楼


我搜索了使用日期/时间作为文件名一部分的标准格式,但无法提供任何内容。
我的问题有两个部分:
正在使用时间戳记强制执行唯一的文件名是一种不好的做法?

不,这很好。

我可以从创建日期开始获取时间并序列化文件名(file0001.bak,file0002 .bak等)

对它们进行顺序编号是更多的工作。可以将时间戳记看作是一个递增的但不连续的编号。

但是仅包含时间戳,就可以在某处/执行诸如mv 2011-01 *的文件操作。

不,它一直都在做。

我使用的格式是YYYY-mm-dd_HH-MM- SS。

很好,因为它们将按时间顺序排序。我会失去下划线,只是因为键入连字符会更容易。

我应该使用更好的格式吗?

不是真的。

评论


我会说“使用ISO标准时间格式”。因此,YYYY-mm-ddTHH:MM:SS(或yyyymmddTHHMMSS)。

–疫苗
11 Mar 25 '11在13:05

@Vatine Agreed,尽管不建议使用第一个变体,因为它不是跨平台的(Windows不允许文件名中使用冒号)。跨平台的最大化可读性的又一个选择是YYYY-MM-DDTHHMMSS

–乔恩·本特利
20年4月18日在18:11

#3 楼

这取决于您的应用程序。有时可以使用您描述的时间戳。有时,当需要考虑名称冲突时,可以使用GUID生成器。

#4 楼

您使用的格式很好,但是如果您需要唯一性并且时间没有其他意义,那么如果该应用程序被多个用户同时使用,并且它们都导致文件在同一时间创建,则您的应用程序可能会出现并发问题夹。如果只希望唯一,则可以考虑生成GUID并删除所有无效字符(例如花括号和破折号)并将其用作文件名。

#5 楼

使用ISO 8601格式还可以使您按日期对文件进行排序(假设它们都具有相同的前缀)。

http://www.iso.org/iso/support/faqs/faqs_widely_used_standards/widely_used_standards_other/date_and_time_format.htmhttp://zh.wikipedia.org/wiki/ISO_8601

评论


我认为您要说的是按词法排序最终会按日期排序。

–迈克尔·科恩(Michael Kohne)
2011-03-25 13:14

#6 楼

联邦调查局有一个“单一”用户问题,需要备份从各地警察那里收到的1亿个刑事逮捕指纹...

...它们的起始日期是:yyyymmdd

我不知道他们将如何继续下去。我继续使用hhmm,对我而言,它就是这样做的。我个人使用ET,FBI也“个人”使用ET,因为这是他们的总部。

评论


这并没有增加其他帖子中更一般的讨论的内容,这些讨论实际上涉及法律字符,排序和唯一性等方面。

–马丁·彼得斯(Martijn Pieters)
2014年12月12日13:03