6

我这样设置Global.asax

protected void Application_BeginRequest(object sender, EventArgs e)
    {
        PersianCulture fa = new PersianCulture();

        Thread.CurrentThread.CurrentCulture = fa;
    }

我想将“1392 1 23”转换为“2013 4 12”。

我怎样才能做到这一点?

4

3 回答 3

9

没有“波斯人DateTime”这样的东西。值DateTime始终公历值,没有特定格式。当您格式化它(通常通过调用ToString)时,您可以确定它的格式 - 如果您使用使用非公历的文化,它会将原始值转换为该日历。

因此,例如,如果您想解析来自波斯用户的输入,然后将其转换为英语用户可以理解的等效日期,您可以使用:

DateTime date = DateTime.Parse(text, persianCulture);
string englishText = date.ToString(englishCulture);
于 2013-04-12T06:03:20.317 回答
2

我不相信有一个术语叫做英语 Datetime波斯语Datetime 。

来自MSDN

DateTime 值类型表示日期和时间,其值范围从 00:00:00(午夜)、0001 年 1 月 1 日 Anno Domini(普通时代)到 11:59:59 PM、9999 年 12 月 31 日(公历)日历。

当您使用CultureDateTime,它会自动转换为此日历。

该类CultureInfo提供特定于文化的信息,例如与特定文化相关的语言、子语言、国家/地区、日历和惯例。此类还提供对DateTimeFormatInfoNumberFormatInfoCompareInfoTextInfo对象的文化特定实例的访问。这些对象包含特定区域性操作所需的信息,例如大小写、格式化日期和数字以及比较字符串。

于 2013-04-12T06:04:59.903 回答
1

您可以使用DateTime.Parse()

 System.Globalization.CultureInfo cultureinfo = 
    new System.Globalization.CultureInfo("en-US");
    DateTime dt = DateTime.Parse("11/04/2013", cultureinfo);
于 2013-04-12T06:12:11.793 回答