gpt4 book ai didi

c# - 将字符串波斯日期转换为公历日期时间

转载 作者:太空狗 更新时间:2023-10-29 19:56:59 28 4
gpt4 key购买 nike

要将字符串波斯日期转换为公历 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com