【问题标题】:C# Customize DateTime offset format in ToString()C# 在 ToString() 中自定义 DateTime 偏移格式
【发布时间】:2021-07-09 22:13:38
【问题描述】:

是否可以使用DateTime.ToString() 产生类似2021-04-14 01:23:45.123456+0800 的输出?

我尝试使用.ToString("yyyy-MM-dd hh:mm:ss.ffffff"),然后使用zzzzzz 等的组合,但似乎无法让字符串的偏移部分不包含:

即它产生2021-04-14 01:23:45.123456+08:00,但我需要+08:00+0800

【问题讨论】:

    标签: c# timestamp


    【解决方案1】:

    没有custom timezone format 可以为您提供不带冒号的完整时区。最简单的解决方案(恕我直言)是删除冒号并手动添加时区:

    dt.ToString("yyyy-MM-dd hh:mm:ss.ffffff") + 
      dt.ToString("zzz").Replace(":","");
    

    或者您可以将时区添加到字符串格式并删除“最后一个”冒号:

    s = dt.ToString("yyyy-MM-dd hh:mm:ss.ffffffzzz");
    s = s.Remove(s.LastIndexOf(':'),1);
    

    【讨论】:

    • 简单易行。感谢那。正是我需要的。
    • 蛮力通常是一个很好的解决方案。作为奖励,如果你添加一行注释,两年后拿起它的维护程序员将能够理解如此清晰的代码。
    • @Flydog57 或描述性函数名称:DateToStringWithTimeZoneWithoutColon :)
    • @DStanley:哦,来吧:Dt2StrWTZnoCol。每次击键都很重要(抱歉,我使用的是旧的,有时甚至是破旧的代码库 :-))
    猜你喜欢
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    相关资源
    最近更新 更多