首页 > 解决方案 > 如何为日期时间字符串找到正确的自定义格式

问题描述

我从2种不同格式的文件中读取日期时间字符串:

  1. 19/02/2019 08:24:59
  2. 2/17/2019 12:25:46 PM

对于第一种格式,我写的自定义格式字符串是:

string firstDate = "19/02/2019 08:24:59";
string customFormatForFirstDateTimeString = "dd/mm/yyyy hh:mm:ss";

我使用它如下:

string firstResultingDateAndTime;

bool parsingSuccessful = DateTime.TryParseExact(
  firstDate, 
  customFormatForFirstDateTimeString, 
  System.Globalization.CultureInfo.InvariantCulture, 
  System.Globalization.DateTimeStyles.None, 
  out firstResultingDateAndTime);

问题是parsingSuccessful结果false。对于第二个日期时间字符串,代码如下:

string secondDate = "2/17/2019 12:25:46 PM";
string customFormatForSecondDateTimeString = "m/dd/yyy hh:mm:ss PM";
string secondResultingDateAndTime;

parsingSuccessful = DateTime.TryParseExact(
  secondDate, 
  customFormatForSecondDateTimeString, 
  System.Globalization.CultureInfo.InvariantCulture, 
  System.Globalization.DateTimeStyles.None, 
  out secondResultingDateAndTime);

我也在这里收到

parsingSuccessful == false;

我认为自定义格式字符串不适合日期时间字符串,但我无法弄清楚为什么。请帮忙。先感谢您。

标签: c#winformsdatetime

解决方案


好吧,mm代表分钟,而不是几个月(我们有MM它)这就是为什么dd/mm/yyyy格式应该是dd/MM/yyyy. 小时格式的另一个问题,我们有范围(使用for hh)和间隔:0..12ttAM/PMHH0..23

 string firstDate = "19/02/2019 08:24:59";
 // Since we don't have AM / PM we can conclude that hour is in 0..23 range 
 string customFormatForFirstDateTimeString = "dd/MM/yyyy HH:mm:ss";

 string secondDate = "2/17/2019 12:25:46 PM";
 string customFormatForSecondDateTimeString = "M/dd/yyyy hh:mm:ss tt";

推荐阅读