2012-06-27 15 views
20

Jak przekonwertować datę perską na datę gregoriańską za pomocą System.globalization.PersianCalendar? Należy pamiętać, że chcę przekształcić moją datę perską (np. Dzisiaj jest 1391/04/07) i uzyskać wynik daty gregoriańskiej, który będzie w tym przypadku 06/27/2012. liczę sekund na odpowiedź ...Konwertuj datę z perskiego na gregoriański

+0

Perska lub * gregoriańska * sekunda? ;-) – Jon

+0

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

+0

moja robocza odpowiedź podobne pytanie http://stackoverflow.com/a/26543563/184572 –

Odpowiedz

47

To rzeczywiście bardzo proste:

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

Po wywołaniu konstruktora DateTime i przechodzą w Calendar, konwertuje go dla Ciebie - tak dt.Year byłoby 2012 w tym przypadku. Jeśli chcesz iść w drugą stronę, trzeba skonstruować odpowiedni DateTime następnie użyć Calendar.GetYear(DateTime) itp

krótki, ale kompletny program:

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

która drukuje 06/27/2012 00:00:00.

+0

Dzięki stary, właśnie tego szukałem. Niech Bóg cię błogosławi :) –

+0

+1 Świetnie! ! Nie wiedział o przepisie 'Kalendarz' w' DateTime', pomyślał 'GetYear',' GetMonth' były sposoby, aby przejść – V4Vendetta

+0

co o ['ToDateTime'] (http://msdn.microsoft.com/en-us /library/3c1445e1%28v=vs.110%29.aspx) metoda ['PersianCalendar'] (http://msdn.microsoft.com/en-us/library/system.globalization.persiancalendar%28v=vs.110 % 29.aspx) class ?? – AminM

11

Co należy zrobić, to po prostu zdefiniować kalendarz w definicji:

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

Można użyć tego kodu do konwertowania perski Data do 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(); 
Powiązane problemy