我有两个时间戳保存到两个XML文件中并从中读取
目前我正在使用WCF Service
方法从xml文件中读取时间戳,因此它们将以Strings
的形式进入,但我需要将它们转换为DateTime
,以便对它们进行比较。
显而易见的Convert.ToDateTime(TimeStampString)
在运行时呈现此错误 -
字符串未被识别为有效的DateTime
同样
DateTime.ParseExact(TimeStampString, "mm/dd/yyyy hh:MM:ss", CultureInfo.InvariantCulture);
两个时间戳都采用DateTime
(mm/dd/yyyy hh:MM:ss
)的正确格式。
我甚至尝试将timstamp字符串拆分为String[]
并手工组装我自己的DateTime
对象,但我仍然收到错误。
这是格式问题吗?
如何使我的String成为有效的DateTime?
答案 0 :(得分:3)
这是格式问题
mm/dd/yy hh:MM:ss
应该是
MM/dd/yyyy hh:mm:ss
(基本上,交换日期中的大写MM
和时间中的小写mm
答案 1 :(得分:1)
我通过删除任何改变美国格式的尝试解决了这个问题,因此Strings采用了美国格式 - 然后在转换时使用IFormatProvider
来改变格式。
IFormatProvider localFormat = new System.Globalization.CultureInfo("fr-FR", true);
DateTime ContentLastUpdatedTime = DateTime.Parse(ContentLastUpdatedStamp, localFormat , System.Globalization.DateTimeStyles.AssumeLocal);
DateTime ContentLastGrabbedTime = DateTime.Parse(LastGrabbedTimeStamp, localFormat , System.Globalization.DateTimeStyles.AssumeLocal);
答案 2 :(得分:0)
您需要使用
DateTime.ParseExact(TimeStampString, "MM/dd/yyyy hh:mm:ss", CultureInfo.InvariantCulture);
而不是
DateTime.ParseExact(TimeStampString, "mm/dd/yyyy hh:MM:ss", CultureInfo.InvariantCulture);
答案 3 :(得分:0)
问题是小写mm
用于分钟,您需要MM
大写MM
,此外您的日期是24小时格式,并且您需要小时部分的大写HH
,因此您的格式应为:
MM/dd/yyyy HH:mm:ss
(考虑到您的原始代码中yyyy
基于您的comment)
答案 4 :(得分:-2)
你去吧
var dtedatetime = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz");
DateTimeOffset dto;
bool bIsParsed = DateTimeOffset.TryParseExact(dtedatetime , "yyyy'-'MM'-'dd'T'HH':'mm':'sszzz",
System.Globalization.CultureInfo.InvariantCulture,
DateTimeStyles.AdjustToUniversal, out dto);
var result = dto.DateTime;