Java 将两个类型的日期合并为一个
我从数据库中获得两种类型的日期:Java 将两个类型的日期合并为一个,java,date,datetime,time,Java,Date,Datetime,Time,我从数据库中获得两种类型的日期: Date : 2017-01-28 || Time : 12:59 我想把它组合成一个Date变量 这是两个变量的来源: @Temporal(value = TemporalType.DATE) @Future @DateTimeFormat(pattern = "dd/MM/YY") @Column(name = "dateDebut", nullable = true) private Date date; @Temporal(TemporalType.
Date : 2017-01-28 || Time : 12:59
我想把它组合成一个Date
变量
这是两个变量的来源:
@Temporal(value = TemporalType.DATE)
@Future
@DateTimeFormat(pattern = "dd/MM/YY")
@Column(name = "dateDebut", nullable = true)
private Date date;
@Temporal(TemporalType.TIME)
@Column(name="Start_Hour")
private Date startHour;
任何帮助都将不胜感激。谢谢。使用对象:
试验
输出
美国东部时间2017年1月28日星期六12:59:00
使用对象:
试验
输出
美国东部时间2017年1月28日星期六12:59:00
我知道您想从该字符串解析日期(因为我不确定您所说的原始格式是什么意思)
因此,也许这会有帮助:
private static final String STRING_TO_FORMAT = "Date : 2017-01-28 || Time : 12:59";
public static void main(String[] args) {
Matcher matcher = Pattern.compile(".*(\\d{4}-\\d{2}-\\d{2}).*(\\d{2}:\\d{2})").matcher(STRING_TO_FORMAT);
matcher.find();
Date date = null;
try {
date = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(matcher.group(1) + " " + matcher.group(2));
System.out.println(date);
} catch (ParseException e) {
}
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yy HH:mm");
System.out.println(formatter.format(date));
}
我知道你想从这个字符串解析一个日期(因为我不知道你说的原始格式是什么意思) 因此,也许这会有帮助:
private static final String STRING_TO_FORMAT = "Date : 2017-01-28 || Time : 12:59";
public static void main(String[] args) {
Matcher matcher = Pattern.compile(".*(\\d{4}-\\d{2}-\\d{2}).*(\\d{2}:\\d{2})").matcher(STRING_TO_FORMAT);
matcher.find();
Date date = null;
try {
date = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(matcher.group(1) + " " + matcher.group(2));
System.out.println(date);
} catch (ParseException e) {
}
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yy HH:mm");
System.out.println(formatter.format(date));
}
现在您需要对日期和时间进行一些转换,您还可以将它们转换为Java8日期和时间类之一——当然,前提是您可以使用Java8。与老式的
Date
类相比,这些类更适合下游使用。这比其他答案更直截了当。例如:
LocalDate d = date.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDate();
LocalTime t = startHour.toInstant().atZone(ZoneOffset.systemDefault()).toLocalTime();
LocalDateTime dt = d.atTime(t);
System.out.println(dt);
这张照片是:
2017-01-28T12:29
根据您的需求,您可能更喜欢使用zoneDateTime
或其他Java 8类型。这些类用途非常广泛,所以很可能只需几行代码就可以得到所需的内容
编辑:一些JPA实现可能直接支持Java8Date和time类,因此您可以节省前两行,只需要第三行。请参阅。现在,您需要对日期和时间进行一些转换,您还可以将它们转换为Java 8日期和时间类中的一个-当然,前提是您可以使用Java 8。与老式的
Date
类相比,这些类更适合下游使用。这比其他答案更直截了当。例如:
LocalDate d = date.toInstant().atZone(ZoneOffset.systemDefault()).toLocalDate();
LocalTime t = startHour.toInstant().atZone(ZoneOffset.systemDefault()).toLocalTime();
LocalDateTime dt = d.atTime(t);
System.out.println(dt);
这张照片是:
2017-01-28T12:29
根据您的需求,您可能更喜欢使用zoneDateTime
或其他Java 8类型。这些类用途非常广泛,所以很可能只需几行代码就可以得到所需的内容
编辑:一些JPA实现可能直接支持Java8Date和time类,因此您可以节省前两行,只需要第三行。请参阅。FYI:Your
DateTimeFormat
模式错误。将YY
更改为YY
。仅供参考,像、java.text.simpleDataFormat
这样麻烦的旧日期时间类现在被java 8和更高版本中内置的类所取代。请参阅。仅供参考:您的DateTimeFormat
模式错误。将YY
更改为YY
。仅供参考,像、java.text.simpleDataFormat
这样麻烦的旧日期时间类现在被java 8和更高版本中内置的类所取代。看见