假设我们有一个给定的DateTime变量,如下所示:
DateTime BirthDate{get;set;}不同的用户/客户端根据他们喜欢的日历(在我们的例子中是Georgian、Hijri和Persian Calendar)设置这个变量,我们希望在Gerogian表示中保存所有的日期,以便我们可以将它们保存在Microsoft中。问题是,是否有一种方法可以找到给定日期的日历,以便我们可以将其从原来的日历转换为Georgian Canlendar?
发布于 2015-02-07 10:38:00
不,DateTime不保留日历信息..。实际上,它总是在公历上。如果使用不同的日历系统构造DateTime,则将其转换为公历,并且需要使用Calendar方法返回原始值。所以你需要单独存储日历系统,基本上。这可能是客户端配置的一部分,根据它的声音。
例如:
Calendar hebrewCalendar = new HebrewCalendar();
DateTime today = new DateTime(5775, 5, 18, hebrewCalendar);
Console.WriteLine(today.Year); // 2015
Console.WriteLine(hebrewCalendar.GetYear(today)); // 5775另一方面,如果您要使用我的野田时间项目,那么适当的类型确实会保留日历系统的信息--而且通常会更清楚地了解即时、本地日期、本地时间等之间的差异。很明显,我有偏见,请注意:)
Noda时间等效于上面的内容(使用2.0,因为它稍微简单一些!)
using System;
using NodaTime;
class Test
{
static void Main()
{
var hebrewCalendar = CalendarSystem.HebrewCivil;
var today = new LocalDate(5775, 5, 18, hebrewCalendar);
Console.WriteLine(today.Year); // 5775
Console.WriteLine(today.WithCalendar(CalendarSystem.Gregorian).Year); // 2015
}
}https://stackoverflow.com/questions/28381085
复制相似问题