0

我正在尝试设置一个可以跟踪虚拟时间的 RPG。经过一些阅读 GregorianCalendar 似乎是做到这一点的最佳方式,但我有一些问题,希望有经验的人能给我一些见解。

这就是我想要做的。游戏将从 1675 年开始,持续约 30 年。到那时,如果他们活了那么久,角色就会退休。角色将能够通过粗略的游戏从我为他们预设的动作中进行选择。有些操作会很短,需要一个小时,而其他操作可能需要一周或一个月。真正的问题来自我大量使用 SQLite。我想保存当前时间以及操作在我的数据库中需要多长时间。设置时我的第一个想法是,如果我想在 1675 年 8 月 15 日开始游戏以使我的数据库有 3 行,请将这些字段设置为 8、15、1675。然后还有 2 列时间。通过光标拉出这些 int 并用类似的东西设置它们

GregorianCalendar time = new GregorianCalendar();
time.set(year, month, date, hour, minute);

我想我会以类似的方式拉动一个动作需要多长时间。有一个 int X,然后是一个字符串来判断这个时间是否以分钟、小时、天等为单位。然后将此 int 添加到从数据库中提取的 int 中以直接添加到日历中。

问:如果我直接将它添加到日历中,我将如何从日历中提取 int 值以存储在数据库中以便稍后加载(当玩家加载他们的游戏时)?

问:如果我将它添加到存储在数据库中的 int 并使用这个新 int 设置日历,当我添加的足够多以使 int 超出日历的范围时会发生什么(日期设置为 31,但我添加了另一天) ?

4

2 回答 2

1

您可以将 GregorianCalendar 对象转换为 UNIX 时间,例如使用getTimeInMillis() setTimeInMillis()。GregorianCalendar 也有一个roll()方法:

将指定金额添加到指定字段,并在字段的值超出当前日期的最大值或最小值时换行。其他字段将根据需要进行调整以保持一致的日期。

于 2012-05-01T03:32:36.010 回答
0

我建议使用Joda Time来代替(有些缺乏的)标准 java 日期和时间实用程序。它更加灵活。

它具有进行日期数学运算的功能,它支持几种不同的日历(ISO8601、佛教、科普特、埃塞俄比亚、公历、公历朱利安、伊斯兰、朱利安),支持间隔、持续时间和周期。它内置了格式化程序,可以让你的输出看起来像你想要的任何东西。

如果是我,我会使用 Joda 并以 Joda 提供的本机格式存储日期(我不记得那是什么),然后再次将其拉出并使用 Joda 进行所有日期数学运算将其转换为您希望用于向用户显示的任何日历。

否则,在我看来,您将重新发明轮子。

于 2012-05-01T03:53:56.053 回答