Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C“DateTime解析短字符串”(“MMMyy”)_C#_.net_Parsing_C# 4.0_Datetime - Fatal编程技术网

C# C“DateTime解析短字符串”(“MMMyy”)

C# C“DateTime解析短字符串”(“MMMyy”),c#,.net,parsing,c#-4.0,datetime,C#,.net,Parsing,C# 4.0,Datetime,我有一个包含日期的字符串,格式为“MMMyy”。这怎么可能呢? 样本: string date = "MAY09"; DateTime a = DateTime.Parse("MAY09"); //Gives "2012.05.09 00:00:00" DateTime b = DateTime.ParseExact("MAY09", "MMMyy", null); //Gives error DateTime c = Convert.ToDateTime("MAY09"); //Gives "

我有一个包含日期的字符串,格式为“MMMyy”。这怎么可能呢?
样本:

string date = "MAY09";
DateTime a = DateTime.Parse("MAY09"); //Gives "2012.05.09 00:00:00"
DateTime b = DateTime.ParseExact("MAY09", "MMMyy", null); //Gives error
DateTime c = Convert.ToDateTime("MAY09"); //Gives "2012.05.09 00:00:00"

I need "2009-05-01"

为第三个参数指定不变区域性,而不是
null

DateTime b = DateTime.ParseExact("MAY09", "MMMyy", CultureInfo.InvariantCulture);

第二个是你想要的——除了使用正确的文化
null
表示使用当前区域性的日期/时间格式信息-如果不是英语区域性,则将失败。(从你的用户档案中不清楚你在哪里,但可能不是在英国文化中?)

指定固定区域性是获取英文月/日名称的一种简单方法:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        string text = "MAY09";
        string pattern = "MMMyy";
        var culture = CultureInfo.InvariantCulture;
        DateTime value = DateTime.ParseExact(text, pattern, culture);
        Console.WriteLine(value.ToString("yyyy-MM-dd", culture));
    }
}

您可以直接将日期/时间格式指定为ToString方法的参数

string dateTime = DateTime.Now.ToString("MMMyy");
这将有助于:

string date = "MAY09";
CultureInfo s = new CultureInfo("en-US");
DateTime b = DateTime.ParseExact(date, "MMMyy", s);

请尝试以下代码:

string date = "MAY09";
CultureInfo culture = CultureInfo.GetCultureInfo("en-US");
DateTime dateTime = DateTime.ParseExact(date,"MMMyy",culture);

null
表示您当前的区域性您是否尝试过使用InvariantCulture?是的!谢谢不变量文化成功了。