Подтвердить что ты не робот

Как преобразовать григорианскую дату в персидскую дату?

Я хочу преобразовать пользовательскую григорианскую дату в персидскую дату на С#. Например, у меня есть строка с этим содержимым:

string GregorianDate = "Thursday, October 24, 2013";

Теперь я хочу иметь:

string PersianDate = پنجشنبه 2 آبان 1392;

или

string PersianDate = 1392/08/02

Спасибо

4b9b3361

Ответ 1

Используйте PersianCalendar:

string GregorianDate = "Thursday, October 24, 2013";
DateTime d = DateTime.Parse(GregorianDate);
PersianCalendar pc = new PersianCalendar();
Console.WriteLine(string.Format("{0}/{1}/{2}", pc.GetYear(d), pc.GetMonth(d), pc.GetDayOfMonth(d)));

Ответ 2

Вы можете использовать PersianDateTime:

PM> Install-Package PersianDateTime

Ссылка: PersianDateTime

Вы можете использовать string.Split(), если вам нужна настройка.

Ответ 3

В Windows 10 с использованием фреймворка 4 +:

Console.WriteLine(Convert.ToDateTime("1392/08/02",new CultureInfo("fa-IR")));

или

Console.WriteLine(DateTime.Parse("1392/08/02", new CultureInfo("fa-IR")));

Ответ 4

Добавляя к другим ответам, вы можете получить первый, используя PersianDateTime:

var gregorianDate = "Thursday, October 24, 2013";
var date = DateTime.Parse(gregorianDate);
var persianDate = new PersianDateTime(date);
var result = persianDate.ToString("dddd d MMMM yyyy");

Ответ 5

    DateTime date = new DateTime(2013, 10, 24);
    var calendar = new PersianCalendar();
    var persianDate = new DateTime(calendar.GetYear(date), calendar.GetMonth(date), calendar.GetDayOfMonth(date));
    var result = persianDate.ToString("yyyy MMM ddd", CultureInfo.GetCultureInfo("fa-Ir"));

Ответ 6

Я предлагаю использовать MD.PersianDateTime, вы можете использовать его так же легко, как DateTime:

var persianDateTimeNow = PersianDateTime.Now;
persianDateTimeNow.EnglishNumber = true;
Console.WriteLine(persianDateTimeNow.ToString());

https://github.com/Mds92/MD.PersianDateTime