【问题标题】:How can I format string "1900-01-01 08:00:00.000" to just HH:MM and add 30 minutes to it?如何将字符串“1900-01-01 08:00:00.000”格式化为 HH:MM 并添加 30 分钟?
【发布时间】:2015-12-24 09:30:12
【问题描述】:

如何将字符串 "1900-01-01 08:00:00.000" 格式化为 HH:MM 并添加 30 分钟。我已经完成了以下操作;

 p[0]="1900-01-01 08:00:00.000";
 TimeSpan _time = TimeSpan.ParseExact(p[0].ToString(), "HH:mm", CultureInfo.InvariantCulture);
 TimeSpan addtime = TimeSpan.FromMinutes(30);
 _time = _time.Add(addtime);

【问题讨论】:

    标签: c# string datetime format timespan


    【解决方案1】:

    这不是TimeSpan,而是DateTimeTimeSpan 表示时间长度,但 DateTime 保持即时时间与日期和时间。

    这就是为什么您需要使用DateTime.ParseExact method 将其解析为具有特定 格式的DateTime。之后,您可以添加30 分钟和AddMinutes method

    string s = "1900-01-01 08:00:00.000";
    DateTime dt = DateTime.ParseExact(s, "yyyy-MM-dd HH:mm:ss.fff", 
                                      CultureInfo.InvariantCulture)
    dt = dt.AddMinutes(30); // 01/01/1900 08:30:00
    

    我希望结果为 HH:mm

    如果你想得到这个string,你可以使用DateTime.ToString这样的方法;

    string result = dt.ToString("HH:mm", CultureInfo.InvariantCulture); // 08:30
    

    如果你想得到这个TimeSpan,你可以使用TimeOfDay propertylike;

    TimeSpan ts = dt.TimeOfDay; // {08:30:00}
    

    【讨论】:

    • TimeSpan ts = dt.AddMinutes(30).TimeOfDay;
    • @Soner Gonul 存在编译错误,您将布尔值分配给 Date 变量
    • @VishnuBabu 您的意思是08:30 作为字符串还是TimeSpan?您可以为此进行格式化。更新了我的答案。
    • @wintersolider 是的,它是一种类型。将TryParseExact更改为ParseExact
    • @musefan 我无法确定 OP 想要 08:30 作为字符串还是 TimeSpan,所以我将两者都添加了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多