gpt4 book ai didi

c# - 有没有办法找出一个 DateTime 变量对应的日历?

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:33 24 4
gpt4 key购买 nike

假设我们有一个给定的 DateTime 变量:

DateTime BirthDate{get;set;}

不同的用户/客户根据他们喜欢的日历设置这个变量(在我们的例子中是 GeorgianHijriPersian Calendar),我们想要将所有日期保存在 Gerogian 演示文稿中,以便我们可以将它们保存在 Microsoft SQL Server 中。问题是是否有办法找出给定日期的日历,以便我们可以将其从原始日历转换为 Georgian Canlendar

最佳答案

不,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 Time项目,那里有适当的类型保留日历系统信息 - 以及通常更清楚瞬间、本地日期、本地时间等之间的区别。请注意,显然我有偏见:)

Noda Time 等同于上述(使用 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
}
}

关于c# - 有没有办法找出一个 DateTime 变量对应的日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28381085/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com