C#DateTime.Parse(longdate)引发异常

C#DateTime.Parse(longdate)引发异常,c#,datetime,uwp,C#,Datetime,Uwp,在UWP中,将日期格式化为长日期字符串,如下所示 string myDateString = new DateTimeFormatter("longdate").Format(DateTime.Today); 给出myDateString=”‎星期四‎, ‎12‎ ‎十月‎ ‎2017年“ 试着像这样把它转换回来 DateTime myDate = DateTime.Parse(myDateString, CultureInfo.CurrentCulture, DateTimeStyles.A

在UWP中,将日期格式化为长日期字符串,如下所示

string myDateString = new DateTimeFormatter("longdate").Format(DateTime.Today);
给出
myDateString=”‎星期四‎, ‎12‎ ‎十月‎ ‎2017年“

试着像这样把它转换回来

DateTime myDate = DateTime.Parse(myDateString, CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal);
DateTime myDate = DateTime.ParseExact(myDateString, "longdate", CultureInfo.CurrentCulture);
抛出
System.FormatException

试着像这样把它转换回来

DateTime myDate = DateTime.Parse(myDateString, CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal);
DateTime myDate = DateTime.ParseExact(myDateString, "longdate", CultureInfo.CurrentCulture);
还抛出
System.FormatException

然后我把我的机器给我们。
myDateString=”的值‎星期四‎, ‎十月‎ 12‎ ‎‎2017年“

但当我尝试将其转换回datetime时,这也会抛出一个
System.FormatException


如何使用当前区域性将长日期字符串转换为C语言中的日期时间?

阅读一些日期时间格式

相关的堆栈日志:

日期时间的基本知识:

使用示例

一个基本的例子:

DateTime d = DateTime.Now;
DateTime ut = d.ToUniversalTime();
// Defines a custom string format to display the DateTime value.
// zzzz specifies the full time zone offset.
  String format = "MM/dd/yyyy hh:mm:sszzz";

String utcstr = utcdt.ToString(format);
      Console.WriteLine(utcstr);
编辑:小型控制台应用程序示例

static void Main(string[] args)
        {
            string myDateString = "Thursday, 12 October 2017";
            //Why use the above just get a new one for today in the correct format
            //Or create your own converter
            DateTime date = DateTime.Now;

            CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
            //or
            var culture = System.Globalization.CultureInfo.CurrentCulture;

            string test = currentCulture.ToString();

             Console.WriteLine(date.ToString(CultureInfo.GetCultureInfo(test)));
            Console.ReadLine();
        }

阅读一些日期时间格式

相关的堆栈日志:

日期时间的基本知识:

使用示例

一个基本的例子:

DateTime d = DateTime.Now;
DateTime ut = d.ToUniversalTime();
// Defines a custom string format to display the DateTime value.
// zzzz specifies the full time zone offset.
  String format = "MM/dd/yyyy hh:mm:sszzz";

String utcstr = utcdt.ToString(format);
      Console.WriteLine(utcstr);
编辑:小型控制台应用程序示例

static void Main(string[] args)
        {
            string myDateString = "Thursday, 12 October 2017";
            //Why use the above just get a new one for today in the correct format
            //Or create your own converter
            DateTime date = DateTime.Now;

            CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
            //or
            var culture = System.Globalization.CultureInfo.CurrentCulture;

            string test = currentCulture.ToString();

             Console.WriteLine(date.ToString(CultureInfo.GetCultureInfo(test)));
            Console.ReadLine();
        }
@左杰伦在一篇文章中解释道

当我们使用DateTimeFormatter.Format方法时,在其返回值中有一些不可见的8206个字符

因此,正如@Corak所建议的,不要使用
DateTimeFormatter
,而是使用
ToString(“D”)

@Jay Zuo在中解释道

当我们使用DateTimeFormatter.Format方法时,在其返回值中有一些不可见的8206个字符



因此,正如@Corak所建议的,不要使用
DateTimeFormatter
,而是使用
ToString(“D”)

您的长日期格式是什么?年月日?获取datetime,datetime d=datetime.Now;然后将其转换为任意格式的字符串,字符串s=d.ToString(“dd/MM/yyyy HH:MM:ss.fff”);
DateTime.ParseExact
没有使用
DateTimeFormatter
,因此我认为它不知道
DateTimeFormatter(“longdate”)的格式。我假设这是UWP?如果是的话,我建议用这种方式标记它。此外,请提供为
myDateString
获得的实际值。如果需要格式化字符串,这应该足够了:DateTime.Today.ToLongDateString(),如我的示例所示,将日期转换为字符串没有问题。问题是从长日期字符串转换回日期时间长日期格式是什么?年月日?获取datetime,datetime d=datetime.Now;然后将其转换为任意格式的字符串,字符串s=d.ToString(“dd/MM/yyyy HH:MM:ss.fff”);
DateTime.ParseExact
没有使用
DateTimeFormatter
,因此我认为它不知道
DateTimeFormatter(“longdate”)的格式。我假设这是UWP?如果是的话,我建议用这种方式标记它。此外,请提供为
myDateString
获得的实际值。如果需要格式化字符串,这应该足够了:DateTime.Today.ToLongDateString(),如我的示例所示,将日期转换为字符串没有问题。问题是从长日期字符串转换回DateTime感谢@JohnChris的建议,但我们不能指定这样的日期格式,因为我们必须使用用户计算机的区域性。再次感谢@JohnChris,但我们没有使用UTC。我们使用本地机器的文化。。。不管那可能在哪里好的。。我为当前的文化。。。但是我不明白为什么你要使用myDateString,如果它是一个无效的格式。解决方法是构建自己的转换器,以获取日期、月份和年份,并将其转换为正确的格式。是否要我为您编写一个转换器?mydateString不是无效格式。它是由“Windows.Globalization.DateTimeFormatting.DateTimeFormatter”(“longdate”)创建的标准长日期格式'谢谢@JohnChris的建议,但我们不能指定这样的日期格式,因为我们必须使用用户机器的文化。再次感谢@JohnChris,但我们没有使用UTC。我们使用本地机器的文化。。。不管那可能在哪里好的。。我为当前的文化。。。但是我不明白为什么你要使用myDateString,如果它是一个无效的格式。解决方法是构建自己的转换器,以获取日期、月份和年份,并将其转换为正确的格式。是否要我为您编写一个转换器?mydateString不是无效格式。它是由“Windows.Globalization.DateTimeFormatting.DateTimeFormatter”(“longdate”)创建的标准长日期格式“您的解决方案不是独立于文化的。请参阅上面的评论。这似乎是一个UWP问题。是的,如果您像new CultureInfo((int)CultureType.AllCultures)一样使用CultureInfo,那么我认为哪种文化无关紧要。您的解决方案不是独立于文化的。请参阅上面的评论。这似乎是一个UWP问题。是的,如果您像使用new CultureInfo((int)CultureType.AllCultures)一样使用CultureInfo,那么我认为哪种文化不重要。