【问题标题】:Get time from string in the same format从相同格式的字符串中获取时间
【发布时间】:2018-06-01 14:47:16
【问题描述】:

我得到了带有日期时间的字符串,并且每次这个日期时间都采用不同的格式。是否可以只从字符串中获取时间并保存它的时间格式。

例如,输入:

"2010-10-23 01:02:45" 

据我所知,这个时间会以 HH:mm:ss 格式显示。 我需要 01:02:45 的结果(格式相同)。

但是对于下一个输入

"2010/1/23 1:05 AM" 

时间格式为“h:mm tt”

如何正确解析?

【问题讨论】:

  • 使用DateTime.TryParse(),然后在ToString()你想要的whatever format中使用
  • “而且每次这个日期时间都以不同的格式” 你至少知道所有可能的格式吗?它们是不同的吗,所以有没有可能例如一次你得到2010-10-9,而下一次得到2010-9-10。因为那时你没有机会
  • 尝试使用 TryParse 的 @maccettura 建议。如果 DateTime.TryParse 在识别某些出现的日期/时间格式时遇到问题,您可能不得不求助于正则表达式并自己解析可能出现的每种格式。
  • @Christoph: 正则表达式解析DateTime?没有。您可以将DateTime.TryParseExact 与多个格式字符串一起使用。
  • @TimSchmelter 好点。

标签: c# datetime time


【解决方案1】:

要将字符串解析为 DateTime,请使用以下内容(内联“out”声明是 C# 7 功能):

DateTime.TryParse("2010-10-23 01:02:45", out DateTime dateTime);

然后您可以使用以下命令将其转换为时间(如您指定的那样):

var time = dateTime.ToString("HH:mm:ss");

所有可用的解析格式都可用here

【讨论】:

    【解决方案2】:

    你可以用相同的格式来获取它们,但是你想要这样:

    现场示例:http://rextester.com/HHKR44127

    DateTime x;
    DateTime y;
    DateTime.TryParse("2010-10-23 01:02:45", out x);
    DateTime.TryParse("2010/1/23 1:05 AM", out y);
    Console.WriteLine(x.ToString("yyyy-MM-dd HH:mm:ss"));
    Console.WriteLine(y.ToString("yyyy-MM-dd HH:mm:ss"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 2017-02-03
      • 1970-01-01
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 2021-03-09
      相关资源
      最近更新 更多