无法将波斯语DateTime转换为格里高利语

时间:2016-08-08 23:48:29

标签: c#

我很困惑!我使用此代码将波斯日期时间列表转换为格里高利,但它们似乎没有被转换:

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();
 }

结果是:

enter image description here

1 个答案:

答案 0 :(得分:2)

您正在正确转换日期,但之后您正在调用使用当前文化显示值的ToShortDateString()。正如the documentation所说:

  

ToShortDateString方法返回的字符串是区分文化的。

您正在使用波斯文化,因此输出字符串以波斯语格式返回。

编辑:要查看实际值,您当然可以使用overload of DateTime.ToString() which accepts an IFormatProvider parameter并传递CultureInfo.InvariantCulture,或者您希望使用哪种文化格式化值:

gregorianDate.ToString(CultureInfo.InvariantCulture);