我想从当前时间开始计算1个月前的毫秒数。例如,如果日期是25.11.2016,那么我想以毫秒格式获得25.10.2016。如何以毫秒计算此日期?我认为下面的代码工作不正常。
System.currentTimeMillis() - 1000*60*60*24*30
答案 0 :(得分:5)
您可以这样使用:
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
c.add(Calendar.MONTH, -1);
long result = c.getTimeInMillis();
请注意,System.currentTimeMillis()使用UTC,因此您需要使用相同的TimeZone创建Calendar实例。
答案 1 :(得分:3)
你可以这样做:
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();
我希望这会有所帮助 安吉洛
答案 2 :(得分:2)
使用 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& 7 ,ThreeTen - Backport。在ThreeTenABP中进一步适用于Android。绝对值得为您添加项目和学习。
答案 3 :(得分:1)
我认为这就是你所需要的。
Calendar aMonthAgo = Calendar.getInstance();
aMonthAgo.add(Calendar.MONTH, -1);
long aMonthAgoInMS = aMonthAgo.getTime().getTime();
答案 4 :(得分:-1)
试试这个:
$this.text()