换句话说,我想要提供Joda-Time的功能:
today = today.withTime(0, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)
但是没有Joda-Time,只能使用java.util.Date.
不推荐使用.setHours()等方法.有更正确的方法吗?
Boz*_*zho 55
Date today = new Date();
today.setHours(0); //same for minutes and seconds
Run Code Online (Sandbox Code Playgroud)
由于不推荐使用这些方法,因此可以使用以下方法Calendar:
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR_OF_DAY, 0); // same for minutes and seconds
Run Code Online (Sandbox Code Playgroud)
如果你最后需要一个Date对象,只需打电话today.getTime()
Tom*_*icz 12
Date today = DateUtils.truncate(new Date(), Calendar.DAY_OF_MONTH);
Run Code Online (Sandbox Code Playgroud)
来自Apache Commons-Lang的DateUtils.提防时区!
Bas*_*que 10
有更正确的方法吗?
就在这里.
LocalDate.now(
ZoneId.of( "America/Montreal" )
).atStartOfDay(
ZoneId.of( "America/Montreal" )
)
Run Code Online (Sandbox Code Playgroud)
Java 8及更高版本现在内置了新的java.time框架.请参阅教程.灵感来自Joda-Time,由JSR 310定义,并由ThreeTen-Extra项目扩展.
下面是一些使用java.time的示例.请注意它们如何指定时区.如果省略,则为JVM的当前默认时区.该默认值可能会有所不同,甚至在运行时的任何时刻都会发生变化,因此我建议您明确指定时区,而不是隐式依赖默认值.
以下是仅限日期的示例,没有时间或时区.
ZoneId zonedId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zonedId );
System.out.println( "today : " + today );
Run Code Online (Sandbox Code Playgroud)
今天:2015-10-19
以下是获取当前日期时间的示例.
ZoneId zonedId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zonedId );
System.out.println( "zdt : " + zdt );
Run Code Online (Sandbox Code Playgroud)
运行时:
zdt:2015-10-19T18:07:02.910-04:00 [美国/蒙特利尔]
该问题要求将时间设置为零的日期时间.这假设一天中的第一个时刻总是时间,00:00:00.0但情况并非总是如此.夏令时(DST)和其他异常意味着这一天可能会在不同的时间开始,例如01:00.0.
幸运的是,java.time可以确定适合特定时区的一天中的第一时刻LocalDate::atStartOfDay.让我们看一些代码使用上面的代码LocalDate命名today和ZoneId命名zoneId.
ZonedDateTime todayStart = today.atStartOfDay( zoneId );
Run Code Online (Sandbox Code Playgroud)
zdt:2015-10-19T00:00:00-04:00 [美国/蒙特利尔]
如果必须有一个java.util.Date用于尚未更新的类以使用java.time类型,请转换.调用java.util.Date.from( Instant instant )方法.
java.util.Date date = java.util.Date.from( zdt.toInstant() );
Run Code Online (Sandbox Code Playgroud)
该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");
Date date = new Date();
System.out.println(dateFormat.format(date));
Run Code Online (Sandbox Code Playgroud)
在这里找到
如果您想要当前日期的午夜(0:00 am),您可以使用默认构造函数并将时间部分清零:
Date today = new Date();
today.setHours(0); today.setMinutes(0); today.setSeconds(0);
Run Code Online (Sandbox Code Playgroud)
编辑:更新,Calendar因为这些方法已被弃用
Calendar today = Calendar.getInstance();
today.clear(Calendar.HOUR); today.clear(Calendar.MINUTE); today.clear(Calendar.SECOND);
Date todayDate = today.getTime();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
217247 次 |
| 最近记录: |