【问题标题】:C# parse DateTime String to time onlyC# 仅将 DateTime 字符串解析为时间
【发布时间】:2021-08-30 02:39:26
【问题描述】:

我是 C# 新手,我有一个类似“2021-06-14 19:27:14:979”的字符串。现在我只想有时间“19:27:14:979”。那么我是将字符串解析为特定的 DateTime 格式,然后将其转换回字符串,还是您会解析或剪切字符串本身?

保持 24 小时制很重要。我不想要上午或下午。

我还没有找到任何解决方案。我尝试将其转换为 DateTime,例如:

var Time1 = DateTime.ParseExact(time, "yyyy-MM-dd HH:mm:ss:fff"); 
var Time2 = Time1.ToString("hh:mm:ss:fff");

但后来我失去了 24 小时格式。

【问题讨论】:

  • 使用已解析的 DateTime 的 TimeOfDay 属性。
  • 您的代码几乎可以工作,但ParseExact 需要两个额外的参数:var Time1 = DateTime.ParseExact("2021-06-14 19:27:14:979", "yyyy-MM-dd HH:mm:ss:fff", null, DateTimeStyles.None);
  • 如果一直是这种格式,可以这样string dateTime = "2021-06-14 19:27:14:979"; string time = dateTime.Split(' ')[1];
  • 这能回答你的问题吗? Convert a Time to a formatted string in C#
  • 如果你想时髦又酷,请使用 TimeOnly - devblogs.microsoft.com/dotnet/…

标签: c# string datetime parsing


【解决方案1】:

您的代码几乎可以运行,但 ParseExact 需要两个额外的参数,ToString 需要大写的 HH 用于 24 小时格式:

var Time1 = DateTime.ParseExact("2021-06-14 19:27:14:979", "yyyy-MM-dd HH:mm:ss:fff", null, DateTimeStyles.None);
var Time2 = Time1.ToString("HH:mm:ss:fff");

阅读:https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings#uppercase-hour-h-format-specifier

您可能想要传递特定的CultureInfo,例如CultureInfo.CreateSpecificCulture("en-US"),而不是将null 作为格式提供者(表示当前文化)传递。

【讨论】:

    【解决方案2】:

    你可以把它在空白处拆分,然后像这样取最后一部分

    var timestamp = "2021-06-14 19:27:14:979";
    var timePart = timestamp.Split(' ')[1];
    

    在您的情况下,这似乎比解析为 DateTime 并返回字符串更容易。

    【讨论】:

      猜你喜欢
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      相关资源
      最近更新 更多