C# 字符串未被识别为有效的日期时间。抛出异常

C# 字符串未被识别为有效的日期时间。抛出异常,c#,asp.net,asp.net-mvc,datetime,C#,Asp.net,Asp.net Mvc,Datetime,我正在尝试将当前日期转换为指定格式 DateTime date = DateTime.ParseExact(DateTime.Now.ToString(), "yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture, DateTimeStyles.None); 我收到以下例外情况 字符串

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

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"));

尝试将DateTime.Now.ToString更改为DateTime.Now是否要以特定格式打印它?正如我在回答中提到的,这不会完成任何事情-它只会序列化和反序列化当前时间。这相当于写入DateTime dt=DateTime.Now@Rob question没有任何东西表明这不是预期的。@CoryNelson我正在尝试将当前日期转换为指定格式: