[英]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和7 , ThreeTen- 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.