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
Java 将两个类型的日期合并为一个_Java_Date_Datetime_Time - Fatal编程技术网

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和更高版本中内置的类所取代。看见