2012-06-27 27 views
20

¿Cómo puedo convertir la fecha persa a la fecha gregoriana usando System.globalization.PersianCalendar? Tenga en cuenta que deseo convertir mi fecha persa (por ejemplo, hoy es 1391/04/07) y obtener el resultado de la fecha gregoriana que será el 27/06/2012 en este caso. Estoy contando segundos para una respuesta ...Convertir fecha del persa al gregoriano

+0

persa o * gregoriano * segundos? ;-) – Jon

+0

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

+0

mi respuesta de trabajo a pregunta similar http://stackoverflow.com/a/26543563/184572 –

Respuesta

47

Es bastante simple en realidad:

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

Cuando se llama al constructor DateTime y pasas en un Calendar, se convierte para usted - por lo que habría dt.Year 2012 en este caso. Si quieres ir a otro lado, es necesario construir la apropiada DateTime a continuación, utilizar Calendar.GetYear(DateTime) etc.

corto pero completo programa:

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

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

+0

Gracias hombre, eso es exactamente lo que estaba buscando. Dios te bendiga :) –

+0

+1 ¡Genial! ! No sabía acerca de la disposición de 'Calendar 'en' DateTime', pensó 'GetYear',' GetMonth' eran las formas de ir – V4Vendetta

+0

qué pasa con ['ToDateTime'] (http://msdn.microsoft.com/en-us /library/3c1445e1%28v=vs.110%29.aspx) Método de ['PersianCalendar'] (http://msdn.microsoft.com/en-us/library/system.globalization.persiancalendar%28v=vs.110 % 29.aspx) clase ?? – AminM

11

Lo que debe hacer es definir el calendario en la definición:

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

Usted puede utilizar este código para convertir Fecha Pérsico para gregoriano.

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