web-dev-qa-db-fra.com

Convertir la date du persan en grégorien

Comment convertir la date persane en date grégorienne en utilisant System.globalization.PersianCalendar? Veuillez noter que je souhaite convertir ma date persane (par exemple, aujourd'hui 1391/04/07) et obtenir le résultat de la date grégorienne qui sera le 27/06/2012 dans ce cas. Je compte les secondes pour une réponse ...

33
Mahdi Tahsildari

C'est assez simple en fait:

// 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

Lorsque vous appelez le constructeur DateTime et passez un Calendar, il le convertit pour vous - donc dt.Year Serait 2012 dans ce cas. Si vous voulez aller dans l'autre sens, vous devez construire le DateTime approprié, puis utiliser Calendar.GetYear(DateTime) etc.

Programme court mais complet:

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

Cela imprime 27/06/2012 00:00:00.

66
Jon Skeet

Vous pouvez utiliser ce code pour convertir la date persane en grégorien.

// 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();
11
MohammadSoori