如何将当前区域设置下的日期时间转换为公历日期时间?

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日”,请问应该如何操作?
3个回答

9

“波斯 DateTime”这个概念不存在。一个 DateTime 值总是一个公历值,没有特定格式。当你对其进行格式化(通常通过调用 ToString)时,您可以确定其格式 - 如果您使用的是使用非公历日历的文化,则会将原始值转换为该日历。

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

DateTime date = DateTime.Parse(text, persianCulture);
string englishText = date.ToString(englishCulture);

2

我不相信有所谓的“波斯时间”或者“英国时间”。

根据MSDN

DateTime 值类型用于表示日期和时间,其值范围从公元 1 年 1 月 1 日零点到公元 9999 年 12 月 31 日晚上 11:59:59,在公历日历中。

当你使用 Culture 与你的 DateTime 结合时,它将自动转换为此日历。

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


1
你可以使用 DateTime.Parse()
 System.Globalization.CultureInfo cultureinfo = 
    new System.Globalization.CultureInfo("en-US");
    DateTime dt = DateTime.Parse("11/04/2013", cultureinfo);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接