C#如何将短字符串(“MMMyy”)解析为DateTime类型?

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"

“null”意味着您当前的文化不支持,尝试使用InvariantCulture吗? - V4Vendetta
是的!谢谢。InvariantCulture解决了这个问题。 - JNM
5个回答

9

第三个参数应指定不变的文化(invariant culture),而不是使用 null

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

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

0

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

string dateTime = DateTime.Now.ToString("MMMyy");

0

这应该有所帮助:

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

0
请尝试下面的代码:
string date = "MAY09";
CultureInfo culture = CultureInfo.GetCultureInfo("en-US");
DateTime dateTime = DateTime.ParseExact(date,"MMMyy",culture);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接