要将字符串波斯日期转换为公历 DateTime
,
我使用日期时间选择器,它向我发送了一个字符串,如 "1394/02/20"
PersianCalendar p = new PersianCalendar();
string[] d = start.Split('/');
DateTime dt = new DateTime(int.Parse(d[0]),
int.Parse(d[1]),
int.Parse(d[2]),
new HijriCalendar());
我的转换函数是
public static DateTime ToGregorianDate(this DateTime dt)
{
PersianCalendar pc = new PersianCalendar();
return pc.ToDateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, 0, 0);
}
它给出了 DateTime
我怎样才能发送正确的 DateTime
当它想要转换时显示此错误:
Input string was not in a correct format.
最佳答案
你有两个不同的问题:
DateTime
解析不支持阿拉伯数字PersianCalendar
不是任何CultureInfo
的一部分,因此在将string
解析为DateTime
(您不能将其设置为预先存在的CultureInfo
)。
可能的解决方案:
string date = "۱۳۹۴/۰۲/۲۰";
string date2 = Regex.Replace(date, "[۰-۹]", x => ((char)(x.Value[0] - '۰' + '0')).ToString());
将阿拉伯数字替换为十进制
DateTime dt = DateTime.ParseExact(date2, "yyyy/MM/dd", CultureInfo.InvariantCulture);
然后忽略日历解析日期
PersianCalendar pc = new PersianCalendar();
DateTime dt2 = pc.ToDateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, dt.Millisecond);
然后将日期转换为正确的日历。
关于c# - 将字符串波斯日期转换为公历日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29960204/