使用DateTime和TimeSpan,非365天

时间:2013-12-20 09:14:26

标签: c# datetime timespan

我正在开发一个小型个人游戏/项目(RPG),我希望能够表示一年中有多少天等等。

起初,我认为DateTimeTimeSpan对象对我的用途来说是完美的,但它们似乎是在365天的格里高利历中固定的。在一个奇幻游戏中,一个世界拥有更长/更短的一年并不罕见(例如,许多系统使用“理想的”360天)。

我的实施选择是什么?有没有办法根据我的需要配置这些结构,或者我应该实现自己的方法和类来处理这个?

4 个答案:

答案 0 :(得分:3)

我认为你应该为自己的方法而不需要struct,需要进行一点点转换,方法可以有效地解决问题

答案 1 :(得分:2)

了解NodaTime,它有一个可能适合您需求的CalendarSystem概念。

http://nodatime.org/1.2.x/userguide/concepts.html

答案 2 :(得分:2)

您想要做的是“日计数会议”。这并不是很难实现,本文可以真正帮助您实现它:http://en.wikipedia.org/wiki/Day_count_convention

答案 3 :(得分:0)

DateTime始终是Gregorian及其数字字段,但在解析或输出字符串时可以使用不同的日历。有关在.NET中使用其他日历的信息,请参阅this article

内置了许多内容,或者您​​可以考虑通过扩展System.Globalization.Calendar来编写自己的自定义日历。

另一方面,

TimeSpan根本不适用于日历或日期。这是经过时间。它的“日期”仅为24小时,与任何特定日历无关。

Zeeshan可能是正确的,你通常不需要这样做。但我认为这取决于你的游戏有多复杂。