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_Datetime - Fatal编程技术网

Java 如何将正常日期转换为当前时间的日期

Java 如何将正常日期转换为当前时间的日期,java,date,datetime,Java,Date,Datetime,我面临以下问题,我有一个日期dd-mm-yyy,我需要将其转换为yyy-mm-dd-HH:mm,即使用给定的日期和当前的小时和分钟 例如: 给定日期:2014年6月11日,我应该得到2014年6月11日09:30 我已经尝试过此代码,但我得到的是2014-06-10 00:00您得到的是00:00,因为您在2014-11-06中传递的信息不包含小时或分钟 如果要在转换后的时间中输入小时:分钟,则需要向输入中添加更多信息或获取当前的小时/分钟。必须使用两个日历实例,因为Calendar setTi

我面临以下问题,我有一个日期dd-mm-yyy,我需要将其转换为yyy-mm-dd-HH:mm,即使用给定的日期和当前的小时和分钟

例如: 给定日期:2014年6月11日,我应该得到2014年6月11日09:30

我已经尝试过此代码,但我得到的是2014-06-10 00:00

您得到的是00:00,因为您在2014-11-06中传递的信息不包含小时或分钟


如果要在转换后的时间中输入小时:分钟,则需要向输入中添加更多信息或获取当前的小时/分钟。

必须使用两个日历实例,因为Calendar setTime方法将小时和分钟设置为零

package com.ggl.testing;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class FormatDate {

    private static final DateFormat inputDateFormat =
            new SimpleDateFormat("dd-MM-yyyy");
    private static final DateFormat outputDateFormat = 
            new SimpleDateFormat("yyyy-MM-dd HH:mm");

    private Calendar calendar;

    public String previousDateString(String dateString) 
            throws ParseException {
        Calendar now = Calendar.getInstance();

        calendar = Calendar.getInstance();
        Date myDate = inputDateFormat.parse(dateString);
        calendar.setTime(myDate);
        calendar.set(Calendar.HOUR_OF_DAY, 
                now.get(Calendar.HOUR_OF_DAY));
        calendar.set(Calendar.MINUTE, 
                now.get(Calendar.MINUTE));

        return outputDateFormat.format(calendar.getTime());
    }

    public static void main(String[] args) {
        String dateString = "10-06-2014";
        try {
            String output = 
                    new FormatDate().previousDateString(dateString);
            System.out.println(output);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

}

输出-2014-06-10 10:47

如果您可以选择使用Java 8,则可以编写如下解决方案:

private LocalTime startOfDay = LocalTime.of(9, 30);

public String previousDateString(String dateString) {
    LocalDate yesterday = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("dd-MM-yyyy"));
    LocalDateTime yesterdayTime = LocalDateTime.of(yesterday, startOfDay);
    return yesterdayTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
}

您得到00:00是因为您没有在代码中的任何位置设置当前时间。我也不知道你为什么要删减一天?
private LocalTime startOfDay = LocalTime.of(9, 30);

public String previousDateString(String dateString) {
    LocalDate yesterday = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("dd-MM-yyyy"));
    LocalDateTime yesterdayTime = LocalDateTime.of(yesterday, startOfDay);
    return yesterdayTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
}