【发布时间】:2015-06-26 14:15:30
【问题描述】:
我在这里尝试了几个问答并制作了这段代码: 想法是将 dt1 与 dt2 进行比较,然后再做一些事情。
date = row.Cells[3].Value.ToString();
DateTime dt1 = DateTime.ParseExact(date, "M/d/yyyy", CultureInfo.InvariantCulture);
dt1 = dt1.AddDays(-4);
String dateStr = DateTime.Now.ToString("M/d/yyyy");
DateTime dt2 = DateTime.ParseExact(dateStr, "M/d/yyyy", CultureInfo.InvariantCulture);
在最后一行我遇到了这个异常:
字符串未被识别为有效的日期时间。
调试时这些值是:date = 06/05/2015dt1 = "01-Jun-15 12:00:00 AMdatestr = 6-26-2015
【问题讨论】:
-
在最后一行我遇到了这个异常:{“字符串未被识别为有效的 DateTime。”} 调试时这是值:date = "06/05/2015" dt1 = " 01-Jun-15 12:00:00 AM" datestr = "6-26-2015"
-
应该编辑您的问题以添加该信息。 :-)
-
出于好奇:您是否有理由将
DateTime转换为string只是为了再次将其解析回DateTime?DateTime dt2 = DateTime.Now.Date;(或DateTime.Today)不会以更干净的方式获得相同的结果吗? -
嗨 Corak,我正在尝试处理不同的地理日期格式,这就是为什么,我不确定是不是正确的方法。
-
@dracebus - 好的,为了避免在使用
DateTime(或任何具有特定文化表示的数据类型)时感到头疼,我通常将其转换为应该尽快的真实数据类型, 仅 使用它,并且仅在尽可能晚地显示数据时再次获得特定于文化的表示。 -- 也尽量保持IFormatProvider同步。目前,您没有在ToString()中指定一个,默认为CurrentCulture。在你的情况下CurrentCulture != InvariantCulture。这也导致了部分问题。