ISO 8601建议使用以下日期和时间格式:
2014-12-29T16:11:20+00:00
我非常喜欢这种格式,因为它允许词汇排序。但是存在一个小问题:某些文件系统不允许文件名中的冒号(至少不是正常的)。 ISO 8601允许省略冒号,但我宁愿在那里使用一些符号而不是数字一起运行:
2014-12-29T161120+0000
ISO 8601是否允许冒号以外的符号?我找不到它的任何迹象。如果没有,是否还有其他公认的符号我可以使用? (或许另一个标准提出这样的符号?)
答案 0 :(得分:6)
答案 1 :(得分:0)
对于组合的日期和时间表示,您必须对日期和时间使用基本格式,或者对日期和时间表示都使用扩展格式,以符合ISO 8601。
符合ISO 8601的日期和时间表示的示例:
public static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
var userManager = services.GetRequiredService<UserManager<ApplicationUser>>();
ApplicationDbContextSeed.SeedDefaultUserAsync(userManager)
.GetAwaiter().GetResult(;
var context = services.GetRequiredService<ApplicationDbContext>();
await ApplicationDbContextSeed.SeedSampleDataAsync(context);
}
host.Run();
}
为获得与各种操作系统文件命名要求和ISO 8601兼容性的最大兼容性,我认为最后一个示例或类似的方法应该有效。
参考:https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations
答案 2 :(得分:0)
没有其他规定,您不能具有完整的日期时间表达式,其中前半部分为扩展格式,后半部分为基本格式;它们必须具有相同的格式。
一种解决方法,我要强调的是,用其他东西(例如,句点或下划线)来分割字符串,以分隔两个有效表达式,即扩展格式的日期和基本格式的时间:例如, myfilename_2020-12-13.T0006Z_otherNotes.ext 或 myfilename_2020-12-13_T0006Z_otherNotes.ext 。
您必须清楚使用这些文件的其他部分-主要是关于机器文件-因为它不是完整的日期时间表达式,而是2个有效文件,每个文件格式不同-扩展,然后是基本-分开用一个明确且一致的字符(出于这个原因,我特别提到了句号/下划线而不是破折号/连字符)。
这种方法的明显缺点是:时间部分很难阅读,其他人可能认为您实施ISO的程度很差,或者对ISO的理解不充分。
好的方面...它可以在Windows中工作,可以按正确的顺序组织文件系统中的元素,尽管有OS,但它遵循ISO标准(以特殊方式),并且与机器兼容(通过脚本)到AI和中间的一切。
这是一种解决方法。我重复一遍。
最后一点,我真的很想知道为什么执行ISO 8601-2019的人没有考虑在文件名中使用ISO的问题,或者他们完全不知道它。