【问题标题】:Elegant way to convert yyyyyMMddHHmmssffff string into acceptable value for DateTime.Parse?将 yyyyyMMddHHmmssffff 字符串转换为 DateTime.Parse 可接受值的优雅方法?
【发布时间】:2020-11-20 09:47:09
【问题描述】:

我有“202006260718083370”作为输入值,我需要将其转换为 DateTime.Parse 的 parse-able 字符串。除了下面的方法,你还能想到什么优雅的方法吗?

方法 1 - 分别在其间插入字符串。

var input = "202006260718083370".Insert(5, "-")
                                .Insert(8, "-")
                                .Insert(11, " ")
                                .Insert(14, ":")
                                .Insert(17, ":")
                                .Insert(20, ".");

var dateTime  = DateTime.Parse("2020-06-26 07:18:08.3370") // What input looks like

方法 2 - 单独传入 new DateTime(....)

var year = "202006260718083370".Substring(0, 4);
var month = "202006260718083370".Substring(4, 2);
var date = "202006260718083370".Substring(6, 2);
var hour = "202006260718083370".Substring(8, 2);
var min = "202006260718083370".Substring(10, 2);
var sec = "202006260718083370".Substring(12, 2);
var mil = "202006260718083370".Substring(14, 4);

方法 3 - 方法 2 几乎相同。使用字符串数组和 concat。喜欢答案here

【问题讨论】:

  • 只要使用DateTime.ParseExact(input, "yyyyMMddHHmmssffff", CultureInfo.InvariantCulture)
  • @Evk,感谢您的快速解决方案。

标签: c# datetime


【解决方案1】:

在您的格式中使用DateTime.ParseExact

来自文档:

将日期和时间的指定字符串表示形式转换为其等效的 DateTime。字符串表示的格式必须与指定的格式完全匹配,否则会抛出异常。

var provider = CultureInfo.InvariantCulture;
var parsedDateTime = DateTime.ParseExact("202006260718083370", "yyyyMMddHHmmssffff", provider);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2022-11-23
    • 1970-01-01
    • 2022-01-19
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多