我有一个包含日期的字符串,格式为“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"
答案 0 :(得分:8)
在3 rd 参数中指定不变文化,而不是null
:
DateTime b = DateTime.ParseExact("MAY09", "MMMyy", CultureInfo.InvariantCulture);
答案 1 :(得分: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));
}
}
答案 2 :(得分:0)
您可以直接指定日期/时间格式作为ToString方法的参数
string dateTime = DateTime.Now.ToString("MMMyy");
答案 3 :(得分:0)
这应该有所帮助:
string date = "MAY09";
CultureInfo s = new CultureInfo("en-US");
DateTime b = DateTime.ParseExact(date, "MMMyy", s);
答案 4 :(得分:0)
请尝试以下代码:
string date = "MAY09";
CultureInfo culture = CultureInfo.GetCultureInfo("en-US");
DateTime dateTime = DateTime.ParseExact(date,"MMMyy",culture);