2012-06-27 18 views
20

Come posso convertire la data persiana in data gregoriana utilizzando System.globalization.PersianCalendar? Si prega di notare che voglio convertire la mia data persiana (ad esempio oggi è il 1391/04/07) e ottenere il risultato Gregorian Date che sarà il 27/06/2012 in questo caso. Sto contando secondi per una risposta ...Converti data da persiano a gregoriano

+0

Persiano o * Gregoriano * secondi? ;-) – Jon

+0

http://stackoverflow.com/questions/5811170/net-how-to-parse-a-date-string-for-persian-jalali-calendar-into-a-datetime-ob – Habib

+0

la mia risposta operativa a domanda simile http://stackoverflow.com/a/26543563/184572 –

risposta

47

E 'piuttosto semplice in realtà:

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

Quando si chiama il costruttore DateTime e passare in un Calendar, lo converte per voi - così dt.Year sarebbe 2012 in questo caso. Se si vuole andare nella direzione opposta, è necessario costruire l'appropriata DateTime quindi utilizzare Calendar.GetYear(DateTime) ecc

breve ma completo programma:

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

che stampa 06/27/2012 00:00:00.

+0

Grazie amico, questo è esattamente quello che stavo cercando. Dio ti benedica :) –

+0

+1 Grande! ! Non conoscevo la disposizione del 'Calender' in' DateTime', pensavo 'GetYear',' GetMonth' erano le strade da percorrere – V4Vendetta

+0

cosa dire di ['ToDateTime'] (http://msdn.microsoft.com/en-us /library/3c1445e1%28v=vs.110%29.aspx) metodo di ['PersianCalendar'] (http://msdn.microsoft.com/en-us/library/system.globalization.persiancalendar%28v=vs.110 % 29.aspx) classe ?? – AminM

11

Che cosa si dovrebbe fare è semplicemente di definire il calendario in definizione:

DateTime dt = new DateTime(year, mon, day, new PersianCalendar()); 
0

È possibile utilizzare questo codice per convertire persiano Data di Gregorian.

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