tl; dr: Bạn có thể sử dụng số DateTimeFormatInfo.GetEraName
/GetAbbreviatedEraName
trở lại làm dấu phân tách, bỏ qua trường hợp. Thứ tự là: ngày, tháng, năm (tùy chọn).
Dường như bạn luôn có thể sử dụng của lịch hiện era's abbreviated name hoặc full era-name như delimiter cho các thẻ DateTime. Đối với nền văn hóa tiếng Anh, nó là AD
hoặc A.D.
, ví dụ: đối với nền văn hóa Đức là n. Chr.
.
var enCulture = new CultureInfo("en-GB");
System.Threading.Thread.CurrentThread.CurrentCulture = enCulture;
var fi = enCulture.DateTimeFormat;
int currentEra = enCulture.Calendar.GetEra(DateTime.Now);
var eraName = fi.GetEraName(currentEra);
var shortEra = fi.GetAbbreviatedEraName(currentEra);
var date = DateTime.Parse($"{shortEra}3{shortEra}08"); // AD or A.D. works
var deCulture = new CultureInfo("de-DE");
System.Threading.Thread.CurrentThread.CurrentCulture = deCulture;
fi = deCulture.DateTimeFormat;
currentEra = deCulture.Calendar.GetEra(DateTime.Now);
eraName = fi.GetEraName(currentEra);
shortEra = fi.GetAbbreviatedEraName(currentEra);
date = DateTime.Parse($"{shortEra}3{shortEra}08"); // n. Chr. works
Điều thú vị là phân biệt chữ hoa chữ thường, do đó, ad
cũng hoạt động. Đó là tài liệu trong DateTimeFormatInfo.GetEra
:
Tên kỷ nguyên là tên một cuốn lịch sử dụng để chỉ một khoảng thời gian xem thuộc từ một điểm cố định hoặc sự kiện. Ví dụ: "A.D." hoặc "C.E." là thời đại hiện tại trong lịch Gregorian. So sánh với ageName là không phân biệt chữ hoa chữ thường, ví dụ: "A.D" tương đương với "a.d.".
Lịch gregorian chỉ có một kỷ nguyên, vì vậy Calendar.GetEra(DateTime.Now)
không thực sự cần thiết. Tôi chưa tìm thấy bất kỳ tài liệu nào khác.
Dưới đây là một số mẫu mà tất cả công việc và sẽ được phân tích để Giáng sinh 2017:
DateTime christmas = DateTime.Parse("ad25ad12ad2017ad");
christmas = DateTime.Parse("AD25ad12ad2017");
christmas = DateTime.Parse("25ad12ad2017AD");
christmas = DateTime.Parse("25ad12ad2017");
christmas = DateTime.Parse("A.D.25ad12ad2017");
christmas = DateTime.Parse("A.D.25ad12ad"); // current year is used
christmas = DateTime.Parse("A.D.25ad12"); // current year is used
Nguồn
2017-04-11 08:41:17
trình nếu tôi thay đổi văn hóa hiện tại của tôi cho 'en-US' hoặc' en-GB', không biết tại sao hoặc –
Ngay cả đối với 'DateTime.Parse ("AD3AD08", CultureInfo.InvariantCulture); ' – xanatos
Đây là tên thời đại (AD = anno domini) – xanatos