将Datetimepicker设置为一个字符串日期

3

我有一个文件,其中日期以以下格式存储(年|月日|日)。现在我需要从该文件中检索值,并将datetimepicker设置为正确的年份、月份和日匹配存储在字符串中的日期。我能够正确地检索所有数据,只是不知道如何正确设置与字符串匹配的日历。这是我到目前为止得到的尽管它不起作用:

string[] editdate = clean[3].Split('|');
EditDatepickCalendar.Value = DateTime.Parse("{0},{1},{2}", editdate[0], editdate[1], editdate[2]);

你尝试过使用 DateTime.ParseExact 吗? - V4Vendetta
3个回答

5
如果你只是需要使用DateTime.ParseExact,那么这听起来就很简单了:
DateTime date = DateTime.ParseExact(clean[3], "yyyy'|'MM'|'dd",
                                    CultureInfo.InvariantCulture);

引用符|在这里并不是必需的,但它可以清楚地表明你只是想让它们被视为字面文本,而不是具有任何日期/时间相关的含义。
(请注意,这个问题与DateTimePicker实际上没有任何关系 - 它是解析值的问题。当遇到问题时,应执行适当的诊断以确定问题所在 - 在UI、数据转换、存储等方面。)

ParseExact 的第一个参数不应该是日期(作为字符串),第二个参数是什么格式? - Marco

1

像这样检查,有时DateTime.Parse会抛出异常...请参见下面的代码部分:

            string DateString = "2012|01|01";
            dateTimePicker1.Value = DateTime.ParseExact(DateString, "yyyy|MM|dd", System.Globalization.CultureInfo.CurrentCulture, System.Globalization.DateTimeStyles.None);

给我一个“字符串未被识别为有效的日期时间”错误,字符串目前为editdate = 2012|01|01。 - DW24da
运行非常顺畅,只是在获取正确数据时出了一些问题。 - DW24da

0

尝试这段代码:

dateTimePicker1.Value = DateTime.ParseExact(
    clean[3], 
    "yyyy|MM|dd", 
    CultureInfo.InvariantCulture);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接