根据用户文化转换字符串10/29/2010

时间:2010-11-10 15:43:23

标签: asp.net

如何将英语日期10/29/2010或任何语言日期转换为用户文化日期格式

我正在使用以下代码

 CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture;
            cultureInfo.DateTimeFormat.
            string lng = cultureInfo.TwoLetterISOLanguageName;
            DateTime dateTime = DateTime.Parse("10/29/2010", cultureInfo);

但是当我尝试解析它时会抛出错误。

任何想法如何解决此问题

感谢名单

5 个答案:

答案 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");