【问题标题】:DateTime.Now.ToString("MM/DD/YYYY") contains incorrect monthDateTime.Now.ToString("MM/DD/YYYY") 包含不正确的月份
【发布时间】:2017-11-29 13:30:46
【问题描述】:

所以我一直在将DateTime.Now.ToString("MM/DD/YYYY") 添加到列表中(以及一堆其他数据),然后将这些列表写入 Excel 工作簿中的各个行。

这一切都很好(这是我经常做的事情),除了那个月。我尝试将其导出 3 次,每次都得到不同的月份; 第一次 56/26-17, 第二个 2/26/2017, 和第三个 14/26/2017....

【问题讨论】:

  • 应该是 MM/dd/yyyy(小写的天和年)
  • 正确代码请参见Custom Date and Time Format Strings
  • 在我看来,您使用的是“mm”而不是“MM”——“mm”是 分钟,而不是几个月。但是,这是猜测,因为您没有展示一个可重现的小示例
  • 确实没有minimal reproducible example 并且您的单行代码不会产生上述错误。请为您的问题添加更多上下文(更多代码)
  • 考虑到 "DD" 和 "YYYY" 是无效值,我猜你的代码实际上使用了 "mm/dd/yyyy" 并且有些事情你没有告诉我们。

标签: c# excel date datetime office-interop


【解决方案1】:

改用这个:

DateTime.Now.ToString("MM/dd/yyyy")

“MM”代表月份。 “dd”几天。 “yyyy”表示年份。

“MM/DD/YYYY”格式错误:

Console.WriteLine(DateTime.Now.ToString("MM/DD/YYYY")) // prints "06/DD/YYYY"

【讨论】:

    【解决方案2】:
    DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
    

    正如已经回答的那样,您需要以小写字母表示日期和年份的格式说明符,但作为附加,您还应该指定区域性变量以确保最终输出在日期部分之间包含“/”。如果没有此区域性参数,“/”可以替换为运行代码的系统区域性的日期分隔符,如“-”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-22
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 1970-01-01
      • 2010-10-19
      • 2020-02-24
      相关资源
      最近更新 更多