C# - 日期/时间格式

时间:2013-12-27 20:25:45

标签: c# .net

使用C#,我试图将日期格式化为以下字符串格式: YYYYMMDD_HHMM.xlsx

这是我的代码:

DateTime.Today.AddDays(0).ToString("yyyymmdd") + "_" + DateTime.Today.AddDays(0).ToString("hhmm")

以下是我的输出:

20130027_1200.xlsx

月份不正确,也不是时间。

2 个答案:

答案 0 :(得分:6)

您正在使用mm,这是几分钟,而不是几个月 - 而您正在尝试使用DateTime.Today打印时间DateTime now = DateTime.Now; string name = now.ToString("yyyyMMdd'_'HHmm'.xlsx'"); 始终在开始时返回午夜当天。

目前尚不清楚为什么要添加0天。我会用:

'

_的{​​{1}}引用并非绝对必要,但我个人认为最简单的方法是引用非格式说明符的所有内容。)

或者:

DateTime now = DateTime.Now;
string name = string.Format("{0:yyyyMMdd}_{0:HHmm}.xlsx", now);

请注意,使用HH代替hh来获取24小时制,而不是12小时制。

此外,请考虑使用UtcNow代替Now,具体取决于您的要求。请注意,围绕夏令时转换,时钟将返回或转发,因此您最终可能会出现重复的文件名。

另请注意,在我的代码中,我使用DateTime.Now 一次 - 使用原始代码,您发现当前日期两次,这可能会在每次调用时给出不同的结果。

最后,您可能还想在格式化日期/时间时指定CultureInfo.InvariantCulture - 否则,如果当前文化是默认情况下不使用公历的文化,您可能无法获得结果期待。

答案 1 :(得分:4)

  1. DateTime.Today返回DateTime,所有与时间相关的属性设置为0.请改用DateTime.Now

      

    物业价值

         

    设置为今天日期的对象,时间组件设置为00:00:00。

         来自DateTime.Today Property

  2. 在您的格式中使用MM获取月份。 mm返回分钟。您可以检查MSDN上的所有格式说明符:Custom Date and Time Format Strings