【问题标题】:Convert DateTime Format c#转换日期时间格式 c#
【发布时间】:2015-03-16 14:20:01
【问题描述】:

我想将字符串转换为 DateTime 格式

CultureInfo cultureInfoProvider = new CultureInfo("en-US");  
var lastUpdatedDate = updatedVAlue.Max();   //value is 20150219T045452:635599184921416348  
DateTime dt = DateTime.ParseExact(lastUpdatedDate,"yyyyMMddTHHmmss:fff",cultureInfoProvider);

我遇到了一个异常 字符串未被识别为有效的日期时间。

【问题讨论】:

  • 如果字符串是“20150219T045452:635”会发生什么?
  • 您的格式模式显示 : 之后会有 3 位数字,但您的输入字符串比 3 位要多得多。
  • 如果我给出 3 个 fff 或分号后没有数字,它会抛出异常

标签: c# datetime


【解决方案1】:

给你。 这将修剪你的字符串并保持它的 3 位数尾部。

  CultureInfo cultureInfoProvider = new CultureInfo("en-US");
  string lastUpdatedDate = updatedVAlue.Max();   //value is 20150219T045452:635599184921416348  
  string[] parse = lastUpdatedDate.Split(':');
  lastUpdatedDate = parse[0] + ":" + parse[1].Substring(0,3);
  DateTime dt = DateTime.ParseExact(lastUpdatedDate,"yyyyMMddTHHmmss:fff",cultureInfoProvider);

在这里测试:https://ideone.com/EIs600


注意:如果可能,请尽量避免在 C# 中使用 var,在这种情况下,string 可以完成这项工作。

【讨论】:

  • 在这种情况下,我同意使用string 而不是var,但只是为了澄清:这仅仅是为了代码的可读性。在功能上,它们完全相同。
【解决方案2】:

你可能正在寻找这个..

CultureInfo cultureInfoProvider = new CultureInfo("en-US");

var lastUpdatedDate = updatedVAlue.Max();//value is 20150219A045452.635-5

DateTime dt = DateTime.ParseExact("20150219A045452.635-5", "yyyyMMddtHHmmss.fffz", cultureInfoProvider);

【讨论】:

  • 我的值和你保留的有很大不同,请检查我的代码一次
  • 不是很灵活,“20150219T045452:6355-5”等会失败。
  • 那么在这种情况下......应该使用正则表达式使字符串与我们的格式兼容,然后转换为日期时间
【解决方案3】:

635599184921416348 部分有问题。这是 太长,只支持最多七位数。试试这个。。

CultureInfo cultureInfoProvider = new CultureInfo("en-US");
var lastUpdatedDate = "20150219T045452:6355991";
DateTime dt = DateTime.ParseExact(lastUpdatedDate, "yyyyMMddTHHmmss:fffffff", cultureInfoProvider);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 2015-03-23
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多