如何解决如何在Java中将日期和sql时间合并为单个日期时间?
使用Java日历如何将开始日期,日期和开始时间结合起来?
例如:
如果开始日期是2020年9月8日。日期是2,开始时间是8:00 AM,那么我们如何获得9/9/2020 8:00 AM的Java日期。这是我失败的尝试。
def startDateTime(Date startDate,int day,java.sql.Time startTime){
def date
date = Calendar.getInstance()
date.setTime(startDate)
//adding day. since day 1 is the first day we need to add day - 1
date.add(Calendar.DATE,day - 1)
// setting the time from startTime
date.setTimeInMillis(startTime.getTime())
return date.getTime()
}
感谢您的帮助。
解决方法
您正在呼叫labels
和date.setTime(startDate)
。第二种方法将覆盖第一种方法中设置的时间。您应该创建2个单独的Calendar实例。
这是您如何实现这一目标
- 为
date.setTimeInMillis(startTime.getTime())
和Calendar
创建单独的startDay
实例 - 从#1中创建的单独
startTime
对象中构造一个新的Calendar
对象,并根据要求添加Calendar
这是完整的代码:
day
输出:
date:星期二Sep 08 01:01:01 IST 2020
注意:我建议在import java.sql.Time;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.Date;
public class ProofOfConcept {
public static void main(String[] args) {
int day = 2;
Time startTime = new Time(1,1,1);
Calendar timeCalendar = Calendar.getInstance();
timeCalendar.setTime(startTime);
Date startDate = new Date();
Calendar startDateCalendar = Calendar.getInstance();
startDateCalendar.setTime(startDate);
/* Only java 8 and above
LocalDateTime localDateTime = LocalDateTime.of(startDateCalendar.get(Calendar.YEAR),startDateCalendar.get(Calendar.MONTH) + 1,startDateCalendar.get(Calendar.DAY_OF_MONTH),timeCalendar.get(Calendar.HOUR),timeCalendar.get(Calendar.MINUTE),timeCalendar.get(Calendar.SECOND));
localDateTime = localDateTime.plusDays(day);
System.out.println("localDateTime : " + localDateTime);
Date dateFromLocalDateTime = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
System.out.println("dateFromLocalDateTime : " + dateFromLocalDateTime);*/
Calendar result = Calendar.getInstance();
result.set(startDateCalendar.get(Calendar.YEAR),startDateCalendar.get(Calendar.MONTH),startDateCalendar.get(Calendar.DAY_OF_MONTH) + 2,timeCalendar.get(Calendar.SECOND));
Date date = result.getTime();
System.out.println("date : " + date);
}
}
上使用java.time.*
软件包。为什么?选中this。但这仅在Java 8中可用。(不过,您可以在8以下的版本中使用joda time)。
编辑:将Ole V.V. 的评论移至答案。
对于Java 7,我建议通过反向端口ThreeTen Backport使用现代Java日期和时间API java.util.*
。
java.time
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。