static void Main(string[] args)
{
var lst = new List<string> { "1392/08/05", "1393/09/10", "1391/05/09" };
var persian = new PersianCalendar();
foreach (var persianDateTime in lst)
{
var d = persianDateTime.Split('/');
var gregorianDate = persian.ToDateTime(int.Parse(d[0]), int.Parse(d[1]), int.Parse(d[2]), 0, 0, 0, 0);
Console.WriteLine(gregorianDate.ToShortDateString());
}
Console.ReadKey();
}
结果是:
答案 0 :(得分:2)
您正在正确转换日期,但之后您正在调用使用当前文化显示值的ToShortDateString()
。正如the documentation所说:
ToShortDateString方法返回的字符串是区分文化的。
您正在使用波斯文化,因此输出字符串以波斯语格式返回。
编辑:要查看实际值,您当然可以使用overload of DateTime.ToString()
which accepts an IFormatProvider
parameter并传递CultureInfo.InvariantCulture
,或者您希望使用哪种文化格式化值:
gregorianDate.ToString(CultureInfo.InvariantCulture);