字符串未被识别为有效的日期时间.引发异常

本文关键字:时间 日期 异常 有效 识别 字符串 | 更新日期: 2023-09-27 18:30:21

我正在尝试将当前日期转换为指定的格式。

DateTime date = DateTime.ParseExact(DateTime.Now.ToString(), "yyyy-MM-dd HH:mm:ss.fff",
                                       CultureInfo.InvariantCulture,
                                       DateTimeStyles.None);

我收到以下异常。

字符串未被识别为有效的日期时间。

我的本地时区是(UTC+10:00)墨尔本。

我在这里做错了什么?

字符串未被识别为有效的日期时间.引发异常

你的代码(即使它有效)什么也做不了。它将简单地序列化和反序列化日期。我相信你正在寻找这个:

string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");

它不起作用,因为DateTime.Now.ToString()给出了一个字符串,例如(我碰巧在同一个时区,并且可能与您具有相同的文化):

14/01/2016 3:54:01 PM  

其格式为:

dd/MM/yyyy h:mm:ss tt

与您使用的格式不匹配:yyyy-MM-dd HH:mm:ss.fff

试试这个:

string fm = "yyyy-MM-dd HH:mm:ss.fff";
string str = DateTime.Now.ToString(fm, CultureInfo.InvariantCulture);
DateTime dt = DateTime.ParseExact(str, fm, CultureInfo.InvariantCulture);

编辑:

以格式实现日期的更好方法是

    DateTime now = DateTime.Now;
    CultureInfo culture = new CultureInfo("en-AU"); //Melbourne
    Thread.CurrentThread.CurrentCulture = culture;
    Console.WriteLine(now.ToString("yyyy-MM-ddTHH:mm:ss.fff"));

IDEONE演示