【问题标题】:is there a way to ignore part of a datetime string when using DateTime.TryParseExact?使用 DateTime.TryParseExact 时有没有办法忽略日期时间字符串的一部分?
【发布时间】:2014-05-16 20:31:06
【问题描述】:

我的日期时间字符串是这样的

19430403000000-0400

但我只关心破折号之前的值(我知道它的 UTC 偏移量,但我不需要那个偏移量值)

所以我想尽可能使用 DateTime.TryParseExact,因为我有一个已经实现它的类,用户将日期时间格式作为字符串传递

所以为此我想要类似的东西

"yyyyMMddhhmmss-####"

用户可以忽略部分字符串格式

这可能吗?

【问题讨论】:

  • 在尝试将其解析为 DateTime 之前,您是否有任何理由不删除该部分?
  • @Stijn 好吧,这是一个我没有想到的好主意,但我需要完成的是随机化日期并将其恢复为原始格式。我想它只是需要更多的编码才能自己完成
  • 随机化日期?以什么方式?另外,如果“-”的位置不变,可以使用String.Substring()方法;如果它不是恒定的,String.IndexOf('-') 找到它的位置,然后使用String.Substring()。这是你想要达到的目标吗?
  • @AsadAli 随机化日期组件(年、月、日)并使用这些新值但以原始格式返回。我想我可以通过破折号处的子字符串删除 UTC 偏移量,但我必须再次将其放回原处。这可能是一种选择,但我必须在各种日期时间格式上对其进行测试。

标签: c# .net


【解决方案1】:

我想我仍然需要指定整个格式,我只需要使用 DateTimeOffset 而不是 DateTime。好像解析好了。

string date8 = "19430403000000-0400";

        DateTimeOffset result2;
        bool parsed = DateTimeOffset.TryParseExact(date8, "yyyyMMddhhmmss zzzz", CultureInfo.InvariantCulture,
                               DateTimeStyles.AllowWhiteSpaces,
                               out result2);

【讨论】:

    【解决方案2】:
    string str = "19430403000000-0400";
    string output = str.Split("-")[0];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      相关资源
      最近更新 更多