java中从日期开始设置和获取时间
我有一个java中从日期开始设置和获取时间,java,date,java-7,Java,Date,Java 7,我有一个日期。我只想复制它的时间,不包括日期。然后我需要将时间插入另一个日期 有没有一个简单的方法可以做到这一点?。我无法更改日期数据类型。我可以做,getHour(),getMinutes()等等,不过这是个冗长的问题。有一个更清晰的版本,我可以使用吗?或者其他库(比如ApacheCommons)设置/获取日期时间(到目前为止还没有发现任何东西) 试试这个: public static Date copyTimeOnly(Date toDate, Date fromDate) { Ca
日期
。我只想复制它的时间,不包括日期。然后我需要将时间插入另一个日期
有没有一个简单的方法可以做到这一点?。我无法更改日期数据类型。我可以做,getHour(),getMinutes()等等,不过这是个冗长的问题。有一个更清晰的版本,我可以使用吗?或者其他库(比如ApacheCommons)设置/获取日期时间(到目前为止还没有发现任何东西) 试试这个:
public static Date copyTimeOnly(Date toDate, Date fromDate) {
Calendar toCal = new GregorianCalendar();
toCal.setTime(toDate);
Calendar fromCal = new GregorianCalendar();
fromCal.setTime(fromDate);
// Copy time only
toCal.set(Calendar.HOUR_OF_DAY, fromCal.get(Calendar.HOUR_OF_DAY));
toCal.set(Calendar.MINUTE, fromCal.get(Calendar.MINUTE));
toCal.set(Calendar.SECOND, fromCal.get(Calendar.SECOND));
toCal.set(Calendar.MILLISECOND, fromCal.get(Calendar.MILLISECOND));
return toCal.getTime();
}
如果您只需要
Date
对象的时间部分,并且不能使用Java 8,也不想使用任何第三方框架,那么请使用:
或者如果您可以使用第三方库(在本例中为
org.apache.commons.lang3.time
)
你可以这样做:
private Date truncate(Date pDate) {
return DateUtils.truncate(pDate, Calendar.DATE);
}
LocalTime
旧的java.util.Date/.Calendar没有表示没有日期部分的时间值的类。相比之下,Joda Time库和java 8中内置的新java.Time包(受Joda Time启发)都提供了LocalTime
类
乔达时间
下面是使用Joda Time 2.5的示例代码
时区至关重要。你想知道巴黎、蒙特勒尔或加尔各答某个人看到的那一刻的时间吗
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime dateTime = new DateTime( yourJUDate, zone );
LocalTime localTime = dateTime.toLocalTime();
要将本地时间应用于另一个日期时间,请调用
withTime
。Joda Time使用不可变对象。因此,一个新的DateTime对象是使用基于原始对象的值创建的。使用Java 8:无法使用Java 8使用标准Java库没有捷径可走。你必须先设置小时,然后设置分钟,然后设置秒。。。查看一下它可能适合您的需要通过插入另一个日期,您的意思是添加、删除或只是创建一个只包含时间的日期吗?将日期实例的年、月、日字段清空。基本上你拥有的是一段时间。没有找到更简单的方法。
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
DateTime dateTime = new DateTime( yourJUDate, zone );
LocalTime localTime = dateTime.toLocalTime();