Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中从日期开始设置和获取时间_Java_Date_Java 7 - Fatal编程技术网

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();