Answers:
java.util.Calendar
Calendar cal = Calendar.getInstance();
// remove next line if you're always using the current time.
cal.setTime(currentDate);
cal.add(Calendar.HOUR, -1);
Date oneHourBack = cal.getTime();
java.util.Date
new Date(System.currentTimeMillis() - 3600 * 1000);
org.joda.time.LocalDateTime
new LocalDateTime().minusHours(1)
Java 8:java.time.LocalDateTime
LocalDateTime.now().minusHours(1)
Java 8 java.time.Instant
// always in UTC if not timezone set
Instant.now().minus(1, ChronoUnit.HOURS));
// with timezone, Europe/Berlin for example
Instant.now()
.atZone(ZoneId.of("Europe/Berlin"))
.minusHours(1));
类似于@Sumit Jain的解决方案
Date currentDate = new Date(System.currentTimeMillis() - 3600 * 1000);
要么
Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1));
Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(10));
这应该落后10分钟吗?
在UTC中:
Instant.now().minus( 1 , ChronoUnit.HOURS )
或分区:
Instant.now()
.atZone( ZoneId.of ( "America/Montreal" ) )
.minusHours( 1 )
Java 8和更高版本具有内置的新java.time框架。
Instant
如果您只关心UTC(GMT),请使用Instant
该类。
Instant instant = Instant.now ();
Instant instantHourEarlier = instant.minus ( 1 , ChronoUnit.HOURS );
转储到控制台。
System.out.println ( "instant: " + instant + " | instantHourEarlier: " + instantHourEarlier );
即时:2015-10-29T00:37:48.921Z | InstantHourEarlier:2015-10-28T23:37:48.921Z
请注意在此瞬间是如何跳回到昨天的日期的。
ZonedDateTime
如果您关心时区,请使用ZonedDateTime
该类。您可以从即时开始,然后分配一个时区,一个ZoneId
对象。此类处理异常的必要调整,例如夏令时(DST)。
Instant instant = Instant.now ();
ZoneId zoneId = ZoneId.of ( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneId );
ZonedDateTime zdtHourEarlier = zdt.minus ( 1 , ChronoUnit.HOURS );
转储到控制台。
System.out.println ( "instant: " + instant + "\nzdt: " + zdt + "\nzdtHourEarlier: " + zdtHourEarlier );
即时:2015-10-29T00:50:30.778Z
zdt:2015-10-28T20:50:30.778-04:00 [美国/蒙特利尔]
zdtHour更早的时间:2015-10-28T19:50:30.778-04:00 [美国/蒙特利尔]
旧的java.util.Date/.Calendar类现在已过时。避免他们。他们出了名的麻烦和混乱。
当您必须使用旧类来处理尚未为java.time类型更新的旧代码时,请调用转换方法。这是从Instant或ZonedDateTime到java.util.Date的示例代码。
java.util.Date date = java.util.Date.from( instant );
…要么…
java.util.Date date = java.util.Date.from( zdt.toInstant() );
该java.time框架是建立在Java 8和更高版本。这些类取代麻烦的老传统日期时间类,如java.util.Date
,Calendar
,和SimpleDateFormat
。
现在处于维护模式的Joda-Time项目建议迁移到java.time类。
要了解更多信息,请参见Oracle教程。并在Stack Overflow中搜索许多示例和说明。规格为JSR 310。
您可以直接与数据库交换java.time对象。使用与JDBC 4.2或更高版本兼容的JDBC驱动程序。不需要字符串,不需要类。java.sql.*
在哪里获取java.time类?
该ThreeTen-额外项目与其他类扩展java.time。该项目为将来可能在java.time中添加内容提供了一个试验场。你可能在这里找到一些有用的类,比如Interval
,YearWeek
,YearQuarter
,和更多。
您可以在下面的代码中输入日期和时间:
DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//get current date time with Calendar()
Calendar cal = Calendar.getInstance();
System.out.println("Current Date Time : " + dateFormat.format(cal.getTime()));
cal.add(Calendar.DATE, 1);
System.out.println("Add one day to current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
System.out.println("Add one month to current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.YEAR, 1);
System.out.println("Add one year to current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.HOUR, 1);
System.out.println("Add one hour to current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, 1);
System.out.println("Add one minute to current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 1);
System.out.println("Add one second to current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println("Subtract one day from current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
System.out.println("Subtract one month from current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.YEAR, -1);
System.out.println("Subtract one year from current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.HOUR, -1);
System.out.println("Subtract one hour from current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.MINUTE, -1);
System.out.println("Subtract one minute from current date : " + dateFormat.format(cal.getTime()));
cal = Calendar.getInstance();
cal.add(Calendar.SECOND, -1);
System.out.println("Subtract one second from current date : " + dateFormat.format(cal.getTime()));
输出:
Current Date Time : 2008/12/28 10:24:53
Add one day to current date : 2008/12/29 10:24:53
Add one month to current date : 2009/01/28 10:24:53
Add one year to current date : 2009/12/28 10:24:53
Add one hour to current date : 2008/12/28 11:24:53
Add one minute to current date : 2008/12/28 10:25:53
Add one second to current date : 2008/12/28 10:24:54
Subtract one day from current date : 2008/12/27 10:24:53
Subtract one month from current date : 2008/11/28 10:24:53
Subtract one year from current date : 2007/12/28 10:24:53
Subtract one hour from current date : 2008/12/28 09:24:53
Subtract one minute from current date : 2008/12/28 10:23:53
Subtract one second from current date : 2008/12/28 10:24:52
这个连结很好:请看这里
看:也看
并且:这里
并且:这里
并且:这里
如果您只需要时间:
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
获取以毫秒为单位的时间,减去以毫秒为单位的分钟,然后将其转换为日期。在这里,您需要物化一个!!!
int minutes = 60;
long currentDateTime = System.currentTimeMillis();
Date currentDate = new Date(currentDateTime - minutes*60*1000);
System.out.println(currentDate);
它对我有用,而不是使用format。要使用时间,只需使用parse和toString()方法
字符串localTime =“ 6:11”; LocalTime localTime = LocalTime.parse(本地时间)
LocalTime lt = 6:11; localTime = lt.toString()
mktime
java中有任何等效的东西吗?减去60分钟吗?