我有一个格式为“08/1999”的日期字符串我想获得相应月份的第一个日期。例如:在这种情况下08/01/1999。 对于en-Us文化来说很简单。我打破了字符串,在字符串中追加“01”以获得08/01/1999然后追溯到DateTime.Parse(datestring),但这仅适用于en-US文化。
我如何为不同的文化做到这一点?
我的日期字符串将始终采用mm / yyyy格式。我试图从这个dateString获取一个DataTime obj。
答案 0 :(得分:7)
使用ParseExact方法。注意上限M是几个月,而下套m是几分钟。
string dateToConvert = "08/1999";
string format = "MM/yyyy";
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result = DateTime.ParseExact(dateToConvert, format, provider);
输出:
{1999-08-01 00:00:00}
您还可以使用Convert.ToDateTime和Parse方法。它将产生相同的结果,但是以隐含的方式:
DateTime result = Convert.ToDateTime(dateToConvert, provider); // Output: {1999-08-01 00:00:00}
DateTime result = DateTime.Parse(dateToConvert, provider); // Output: {1999-08-01 00:00:00}
阅读更多内容:
答案 1 :(得分:3)
我打破了字符串,在字符串中附加“01”以获取08/01/1999,然后是DateTime.Parse(datestring)
这是一个非常冗长的方式。只需这样就可以了:
DateTime.Parse("08/1999")
我如何为不同的文化做到这一点?
如果您的字符串始终采用此格式,请执行以下操作:
DateTime.Parse("08/1999", CultureInfo.InvariantCulture)
答案 2 :(得分:3)
我不确定我是否正确理解了您的问题,但如果您想强制使用美国日期格式,无论客户端计算机的区域设置如何,您都可以尝试传递CultureInfo.InvariantCulture
:
DateTime.Parse("08/1999", System.Globalization.CultureInfo.InvariantCulture)