gpt4 book ai didi

c# - 转换为 shamsi 日期到 miladi 日期

转载 作者:行者123 更新时间:2023-12-03 20:05:33 29 4
gpt4 key购买 nike

如何将 Shamsi 日期转换为 Miladi 日期?
例如我的值是 1374/06/27 我想将此日期转换为 Miladi 日期 1995/09/18 .
我找不到将 Shamsi 转换为 Miladi 的函数。
这是什么功能?

最佳答案

此答案假定“Shamsi”表示“Solar Hijri”或“Persian”日历,而“Miladi”表示“Gregorian Calendar”。这就是我的研究表明的,尽管我以前从未听说过任何一个术语。
使用 System.DateTime
如果您喜欢使用内置类型,则可以像这样简单地执行转换:

Calendar persian = new PersianCalendar();
DateTime date = new DateTime(1374, 6, 27, persian);
Console.WriteLine(date.Year); // 1995
Console.WriteLine(date.Month); // 9
Console.WriteLine(date.Day); // 18
基本上 DateTime总是在公历系统中,即使您使用不同的日历系统构造一个值。 (请注意,仅使用 Console.WriteLine(date) 会将其转换回您的默认文化的默认日历系统,这就是我没有在同一代码中这样做的原因。)
在相反的方向,您需要使用 persian.GetYear(date)等等。
使用 NodaTime
我个人是 not a big fan of System.DateTime etc - 在我的 NodaTime library 中,当您指定日历系统时,这是值本身的一部分。所以你可以用波斯历系统构造一个日期,这就是它将永远使用的日历系统 - 但是很容易将它转换为公历系统中的日期,反之亦然:
LocalDate persianDate = new LocalDate(1374, 6, 27, CalendarSystem.PersianArithmetic);
LocalDate gregorianDate = persianDate.WithCalendar(CalendarSystem.Gregorian);
显然,我认为为了清晰起见,值得使用 NodaTime - 以及许多其他原因 - 但选择权在你。

关于c# - 转换为 shamsi 日期到 miladi 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62642715/

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