Как преобразовать персидскую дату в григорианскую дату с помощью System.globalization.PersianCalendar? Обратите внимание, что я хочу преобразовать свою Персидскую Дату (например, сегодня 1391/04/07) и получить результат Грегорианской даты, который в этом случае будет 27 июня 2012 года. Я подсчитываю секунды для ответа...
Преобразование даты с персидского в григорианский
Ответ 1
Это довольно просто:
// I'm assuming that 1391 is the year, 4 is the month and 7 is the day
DateTime dt = new DateTime(1391, 4, 7, persianCalendar);
// Now use DateTime, which is always in the Gregorian calendar
Когда вы вызываете конструктор DateTime
и передаете его в Calendar
, он преобразует его для вас - поэтому dt.Year
будет в этом случае в 2012 году. Если вы хотите пойти другим путем, вам нужно построить соответствующий DateTime
, затем использовать Calendar.GetYear(DateTime)
и т.д.
Короткая, но полная программа:
using System;
using System.Globalization;
class Test
{
static void Main()
{
PersianCalendar pc = new PersianCalendar();
DateTime dt = new DateTime(1391, 4, 7, pc);
Console.WriteLine(dt.ToString(CultureInfo.InvariantCulture));
}
}
Это печатает 06/27/2012 00:00:00.
Ответ 2
Что вам нужно сделать, так это просто определить календарь в определении:
DateTime dt = new DateTime(year, mon, day, new PersianCalendar());
Ответ 3
Вы можете использовать этот код для преобразования персидской даты в григорианский.
// Persian Date
var value = "1396/11/27";
// Convert to Miladi
DateTime dt = DateTime.Parse(value, new CultureInfo("fa-IR"));
// Get Utc Date
var dt_utc = dt.ToUniversalTime();
Ответ 4
У меня есть метод расширения для этого:
public static DateTime PersianDateStringToDateTime(this string persianDate)
{
PersianCalendar pc = new PersianCalendar();
var persianDateSplitedParts = persianDate.Split('/');
DateTime dateTime = new DateTime(int.Parse(persianDateSplitedParts[0]), int.Parse(persianDateSplitedParts[1]), int.Parse(persianDateSplitedParts[2]), pc);
return DateTime.Parse(dateTime.ToString(CultureInfo.InvariantCulture));
}
Пример: преобразование 1398/07/05
в 2019/09/27