假设我有一个 Java 算法,我想根据与每个对象关联的时间每月执行一些操作。
例如,如果Object a
的时间为long t
,并且t
自纪元以来以毫秒为单位,我该如何找出t
是 03/2014 的某个时间吗?
作为第二个问题,我怎样才能在时间上向后迭代几个月 - 所以如果我从 2014 年 5 月 1 日开始,我怎样才能准确地回到 4 月、3 月、2 月等,而不用担心整个时间一个月有 28 - 31 天的问题吗?我正在考虑使用 Calendar
类,但不确定是否可以更新 MONTH
变量并让它给我一个正确的毫秒值。例如,如果现在是 3 月 31 日,我将月份更新为 2 月,然后它突然认为现在是 2 月 31 日,该怎么办?
最佳答案
最简单的方法是使用 java.util.Calendar
正如您在问题中提到的那样。您可以使用以下方式轻松获取实例
//use whatever time zone your milliseconds originiate from
//there is another getter that takes a Locale, which may be useful depending on your context
Calander c = Calendar.getInstance(TimeZone.getDefault());
然后您可以使用设置时间
c.setTimeInMillis(t);
为了查明这是什么时候,您可以使用DateFormat
打印出结果。对象
DateFormat df = DateFormat.getInstance(DateFormat.SHORT);
System.out.println(df.format(c.getTime());
要在月份(或任何其他时间单位)之间移动,您可以使用月份字段“添加”到日历:
c.add(Calendar.MONTH, -2);
好消息是,您可以对任何其他时间单位使用 add()
方法,并且 Calendar
类将根据需要正确调整日期,以您期望的方式(即,由 日历
的 Locale
定义的文化上适当的方式)。
最后,您可以使用以下方法将其恢复为毫秒
long newTime = c.getTimeInMillis();
关于Java - 毫秒到月/年(不仅仅是当前时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23476257/