使用C#,我试图将日期格式化为以下字符串格式: YYYYMMDD_HHMM.xlsx
这是我的代码:
DateTime.Today.AddDays(0).ToString("yyyymmdd") + "_" + DateTime.Today.AddDays(0).ToString("hhmm")
以下是我的输出:
20130027_1200.xlsx
月份不正确,也不是时间。
答案 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)
DateTime.Today
返回DateTime
,所有与时间相关的属性设置为0.请改用DateTime.Now
。
物业价值
设置为今天日期的对象,时间组件设置为00:00:00。
来自DateTime.Today
Property 的
在您的格式中使用MM
获取月份。 mm
返回分钟。您可以检查MSDN上的所有格式说明符:Custom Date and Time Format Strings