繁体   English   中英

如何计算1个月前的毫秒数?

[英]How to calculate 1 month ago in milliseconds?

我想从当前时间(以毫秒为单位)计算1个月前。 例如,如果日期为25.11.2016,那么我想以毫秒格式获取25.10.2016。 如何计算该日期的毫秒数? 我认为以下代码无法正常工作。

System.currentTimeMillis() - 1000*60*60*24*30 

您可以使用这种方式:

Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
c.add(Calendar.MONTH, -1);
long result = c.getTimeInMillis();

请注意,System.currentTimeMillis()使用的是UTC,因此您需要使用相同的TimeZone创建Calendar的实例。

您可以通过以下方式进行操作:

        Date d = new Date();
        Calendar c = new GregorianCalendar();
        c.setTime(d);
        c.add(Calendar.MONTH, -1);
        Date dOneMonthAgo = c.getTime();
        System.out.println("D: "+d+" dOneMonthAgo: "+dOneMonthAgo);
        long todayMillis = d.getTime();
        long oneMonthAgoMillis = dOneMonthAgo.getTime();

我希望这对安吉洛有帮助

使用Java 8,您可以执行以下操作:

// Get the actual date time and subtract one month
LocalDateTime ldt = LocalDateTime.now().minusMonths(1);

// LocalDateTime cannot be directly converted to millis. It has no notion of  a TimeZone, so:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles")); // Just insert the correct zone

// Now you can get the Millis:
System.out.println(zdt.toInstant().toEpochMilli());

感谢评论者@BasilBourque:

对于Java 6和7ThreeTen- Backport。 ThreeTenABP中进一步适用于Android。 绝对值得为您添加项目和学习的麻烦。

我认为这就是您所需要的。

Calendar aMonthAgo = Calendar.getInstance();
aMonthAgo.add(Calendar.MONTH, -1);
long aMonthAgoInMS = aMonthAgo.getTime().getTime();

尝试这个:

try {
        SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
        Date past = format.parse("01/10/2010");
        Date now = new Date();

        System.out.println(TimeUnit.MILLISECONDS.toMillis(now.getTime() - past.getTime()) + " milliseconds ago");
        System.out.println(TimeUnit.MILLISECONDS.toMinutes(now.getTime() - past.getTime()) + " minutes ago");
        System.out.println(TimeUnit.MILLISECONDS.toHours(now.getTime() - past.getTime()) + " hours ago");
        System.out.println(TimeUnit.MILLISECONDS.toDays(now.getTime() - past.getTime()) + " days ago");
} catch (Exception j) {
        j.printStackTrace();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM