如何将英语日期10/29/2010或任何语言日期转换为用户文化日期格式
我正在使用以下代码
CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
cultureInfo.DateTimeFormat.
string lng = cultureInfo.TwoLetterISOLanguageName;
DateTime dateTime = DateTime.Parse("10/29/2010", cultureInfo);
但是当我尝试解析它时会抛出错误。
任何想法如何解决此问题
感谢名单
答案 0 :(得分:3)
将ParseExact与英语(或不变)文化结合使用,将String转换为日期时间,然后您可以使用ToString
以用户的日期格式输出。
// this is in "d" (= short date) format of the invariant culture
var englishDateString = "10/29/2010";
// convert it to a datetime
var date = DateTime.ParseExact(englishDateString, "d", CultureInfo.InvariantCulture);
// now you can output the date in the user's culture
var localizedDateString = date.ToString("d");
如果您想要明确,可以将CultureInfo.CurrentCulture
作为第二个参数添加到ToString,但这不是必需的,因为如果没有指定文化,这是默认值。
答案 1 :(得分:1)
以下是解析美国日期的示例:
DateTime.Parse("10/29/2010", new CultureInfo("en-US"));
答案 2 :(得分:1)
我在面对日期转换时遇到了同样的痛苦,并且我使用了一个函数(下面的代码),您可以根据需要进行修改。尝试或从中获取想法,让我知道它是否有用
Imports Microsoft.VisualBasic Imports System.Globalization Public Class DatumKonvert1
Public Shared Function DK1(ByVal myDMstring As String) As Date
Dim source As String = myDMstring
Dim d As DateTime = DateTime.ParseExact(source, "d'/'M'/'yyyy", CultureInfo.InvariantCulture)
Dim resultMydate As String = d.ToString("M'/'d'/'yyyy")
Dim mdx = DateTime.ParseExact(resultMydate, "M'/'d'/'yyyy", CultureInfo.InvariantCulture)
Return mdx End Function End Class
答案 3 :(得分:0)
使用DateTime.ParseExact("10/29/2010", "MM/dd/yyyy", CultureInfo.InvariantCulture);
代替DateTime.Parse
一旦拥有DateTime
,它就不再受特定文化的束缚,但可以根据需要输出。通常,这是使用DateTime .ToString
方法之一或.ToShortDateString()
之类的快捷方式,它使用当前线程的文化。
编辑:注意,如果我将月份和日期放在正确的位置,会有所帮助。糟糕。
答案 4 :(得分:0)
使用此:
public static string ChangeDateToUserFormat(string dateValue, string dateCulture)
{
CultureInfo dateCultureInfo = CultureInfo.GetCultureInfoByIetfLanguageTag(dateCulture);
DateTime date = DateTime.Parse(dateValue, dateCultureInfo);
return date.ToString(CultureInfo.CurrentCulture);
}
例如:
string date = ChangeDateToUserFormat("10\29\2010", "en-US");