5

我有一个包含日期的字符串,格式为“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"
4

5 回答 5

9

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

DateTime b = DateTime.ParseExact("MAY09", "MMMyy", CultureInfo.InvariantCulture);
于 2012-07-26T06:40:49.400 回答
4

第二个是你想要的——除了使用正确的文化。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));
    }
}
于 2012-07-26T06:41:34.817 回答
0

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

string dateTime = DateTime.Now.ToString("MMMyy");
于 2012-07-26T06:44:35.437 回答
0

这应该有助于:

string date = "MAY09";
CultureInfo s = new CultureInfo("en-US");
DateTime b = DateTime.ParseExact(date, "MMMyy", s);
于 2012-07-26T06:45:07.493 回答
0

请尝试以下代码:

string date = "MAY09";
CultureInfo culture = CultureInfo.GetCultureInfo("en-US");
DateTime dateTime = DateTime.ParseExact(date,"MMMyy",culture);
于 2012-07-26T06:48:33.027 回答