使用 C# 将 DateTime 转换为字符串的魔术字符串

2024-05-11

今天我遇到了一个讨厌的错误。该任务非常简单,我所需要做的就是将 DateTime 对象转换为字符串“yyyymmdd”格式。 “yyyymmdd”部分在外部软件供应商的开发文档中进行了说明。因此,我方便地从他们的文件中复制了字符串并粘贴到我的代码中。所以我得到了下一个

public string GetDateString(DateTime dateTime)
{
    return dateTime.ToString("yyyymmdd");
}

很简单。如此简单以至于我不想对该方法进行单元测试。 20 分钟后,当我的组件的其他部分完成时。我启动了应用程序来检查一切是否正常。我几乎立即注意到我的网页中显示了一些本应是日期的字段20091511!这是不对的,一年中没有第 15 个月。所以,我赶紧回到我的代码来检查可能的错误。事实证明,在将 DateTime 转换为字符串时,我应该使用“yyyyMMdd”而不是“yyyymmdd”。

承认,这个错误是由于我缺乏对细节的关注。所有 C# 参考文献中均明确说明了“mm”和“MM”之间的区别。我仍然想说,如果一个人不每天处理此类任务,很容易忽视这些差异。

我的问题是:是否有一种干净的(即没有魔术字符串)方法可以用一行代码进行覆盖?这return dateTime.Year + "" + dateTime.Month + "" + dateTime.Day;代码似乎可以工作,但它太像黑客了。

更新:看起来字符串格式方式是 C# 可以提供的最好的方式。也许我被洗脑了,但我仍然认为这种编程风格属于c等低级语言。


String.Format("{0:0000}{1:00}{2:00}", dateTime.Year, dateTime.Month, dateTime.Day);

您可以使用它,但我更喜欢简洁的格式。除了 00,您还可以使用 MM 进行特定月份格式(例如DateTime.ToString()).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 C# 将 DateTime 转换为字符串的魔术字符串 的相关文章

随机推荐