Java - 毫秒到月/年(不仅仅是当前时间)

标签 java calendar milliseconds

假设我有一个 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/

相关文章:

java - 为什么我的 Activity 自动重新启动?

java - 在数组中搜索字符串

java - 从字节序列创建 InputStream 的简短而巧妙的方法

calendar - Liferay:在列表页面中显示日历事件的相关资源

datetime - 毫秒格式来解析日期时间?

java - Criteria 添加顺序作为列操作

android - 在将数据转换为设备时区的同时获得4个小时的时间差?

jquery - 日期范围选择器无法正常工作

java - SimpleDateFormat 无法解析的日期异常

javascript setUTCMilliseconds 错了吗?否则我错了