ana*_*lov 14 c# datetime timespan
您可以为DateTime对象指定自定义格式,如下所示:
DateTime.Now.ToString("HH:mm:ss"); // 19:55:23
Run Code Online (Sandbox Code Playgroud)
但是当我尝试对TimeSpan这样的对象使用相同的格式时:
DateTime.Now.TimeOfDay.ToString("HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)
我得到了"Input string was not in a correct format."例外.
事实证明,解决方案是你需要逃避':'像中的字符"HH\\:mm\\:ss".请注意,有一个双反斜杠,因为如果您只指定一个,它将破坏字符串,因此您也需要转义该字符串.
问题是,为什么.NET Framework开发人员会这样做?必须有一个合理的理由.为什么我们不能使用自定义格式说明符而不像我们可以使用DateTime对象那样转义它们?
寻找.NET专家来阐明这个主题.
Ser*_*eyS 11
如文档中所述,DateTime.ToString以及TimeSpan.ToString格式说明符之间的区别之一如下:自定义TimeSpan格式说明符不包括占位符分隔符符号,例如将小时数与小时数,小时数与分数秒或小数秒数分开的符号.相反,这些符号必须作为字符串文字包含在自定义格式字符串中.
在对比用TimeSpan(参见文档格式说明的表),DateTime格式说明包括用于日期分隔符预定义的符号/,以及用于时间分隔符:.这意味着,例如对于意大利文化,分号将被识别为时间分隔符(不是文字),并将替换为.符号:
// outputs 09.57.18 instead of 09:57:18 because of Italian culture.
Console.WriteLine(DateTime.Now.ToString("hh:mm:ss", CultureInfo.GetCultureInfo("it-IT")));
Run Code Online (Sandbox Code Playgroud)
我认为.NET设计制作之间这种差异DateTime和TimeSpan字符串格式化故意的,它是安静的合理性.这是因为历史上日期/时间的格式不同,因为不同的文化..NET尝试为此类提供全球化手段DateTime.但是TimeSpan没有获得这样的"全球化"职责,它只是一种代表时间段的类型,它的格式与任何文化细节都没有关系(如果它们曾经存在过),而是在不同的文化环境中它的格式是不变的.
| 归档时间: |
|
| 查看次数: |
1555 次 |
| 最近记录: |