我有一个问题在我的ASP.NET中使用默认系统“en-GB”culture将公历日期转换为波斯语(Hijri日历) 。MVC应用 我用全球化的标签在我的web.config所以默认文化将是“EN-GB”:“字符串未被识别为有效日期时间”在某些确切日期发生错误
<system.web>
...
<globalization uiCulture="en-GB" culture="en-GB" />
...
</system.web>
转换将会针对不同的是我列出了他们下面这些确切日期的任何日期并且会抛出“字符串未被识别为有效的日期时间。”错误。
确切日期,这将引发异常是:
- 22/07 /(任何一年)
- 22/09 /(任何一年)
- 19/05 /(任何一年 )
- 20/05 /(任何年)
- 21/05 /(任何年)
我的示例代码的一部分:
using System.Globalization;
...
...
public static PersianCalendar PC = new PersianCalendar();
...
//I'm using this method for conversion
public static DateTime GregorianToPersian(DateTime date)
{
...
string stringDate = string.Format("{0}/{1}/{2} {3}:{4}:{5}"
, PC.GetDayOfMonth(date), PC.GetMonth(date), PC.GetYear(date)
, PC.GetHour(date), PC.GetMinute(date), PC.GetSecond(date));
return DateTime.Parse(stringDate); //error!
}
希望你们能帮助我。 谢谢。
请您提供[mcve]而不是片段,并提供您想要实现的更多细节?请记住,公历中的'DateTime'总是*总是*您的“转换”代码看起来不像它会对我有用*的结果。 (您可能会发现我的Noda Time项目在这里更加有用,因为它的'LocalDate'等类型*会*保留日历信息。) –
举例来说,22/07/2017(格里高利)是31/04/1396(波斯语) 。您如何期望将其解析为公历? –
为什么你在第一个地方建立这个字符串?如果你想使用波斯文日历文化打印日期时间,为什么不只是在格式字符串中指定文化,例如'String.Format(CultureInfo.GetCultureInfo(“fa-IR”),“{0}”,DateTime.Now )'。 *日期时间*值不会更改 –