2012-06-27 35 views
20

Làm cách nào để chuyển đổi ngày Ba Tư sang ngày Gregorian bằng System.globalization.PersianCalendar? Xin lưu ý rằng tôi muốn chuyển đổi Ngày Ba Tư của tôi (ví dụ: hôm nay là 1391/04/07) và nhận kết quả Ngày Gregorian sẽ là ngày 27 tháng 6 năm 2012 trong trường hợp này. Tôi đang đếm giây cho một câu trả lời ...Chuyển đổi Ngày từ Ba Tư sang Gregorian

+0

Ba Tư hoặc * Gregorian * giây? ;-) – Jon

+0

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

+0

câu trả lời của tôi cho câu hỏi tương tự http://stackoverflow.com/a/26543563/184572 –

Trả lời

47

Nó khá đơn giản thực sự:

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

Khi bạn gọi constructor DateTime và vượt qua trong một Calendar, nó chuyển đổi nó cho bạn - vì vậy dt.Year sẽ 2012 trong trường hợp này. Nếu bạn muốn đi theo con đường khác, bạn cần phải xây dựng phù hợp DateTime sau đó sử dụng Calendar.GetYear(DateTime), vv

ngắn nhưng đầy đủ chương trình:

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

Đó in 2012/06/27 00:00:00.

+0

Cảm ơn người đàn ông, đó là chính xác những gì tôi đang tìm kiếm. Thiên Chúa chúc lành cho bạn :) –

+0

+1 Tuyệt vời! ! Không biết về điều khoản 'Calender' trong' DateTime', nghĩ rằng 'GetYear',' GetMonth' là những cách để đi – V4Vendetta

+0

những gì về ['ToDateTime'] (http://msdn.microsoft.com/en-us /library/3c1445e1%28v=vs.110%29.aspx) phương thức của ['PersianCalendar'] (http://msdn.microsoft.com/en-us/library/system.globalization.persiancalendar%28v=vs.110 % 29.aspx) lớp ?? – AminM

11

Những gì bạn cần làm là chỉ cần xác định lịch trong định nghĩa:

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

Bạn có thể sử dụng mã này để chuyển đổi ngày Persian để 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(); 
Các vấn đề liên quan