我可以将hh:mm格式转换为yyyy-MM-dd HH:mm:ss吗?

时间:2019-05-07 21:47:02

标签: android date datetime

我有一个日期字符串,格式为hh:mm。我想将其转换为yyyy-MM-dd HH:mm:ss此格式并将其转换为UTC时区并将其保存到数据库中。

我尝试过:

  private void returnPickupTimeUTC(){
        String pickupTime = "04:05 pm";
        Date pickDate = null;
        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a",Locale.US);
        try{
           pickDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(pickupTime);
        } catch (ParseException ex){

        }
Calendar calendar = Calendar.getInstance();
        calendar.setTime(pickDate);
        Date time = calendar.getTime();
        SimpleDateFormat outputFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.US);
        outputFmt.setTimeZone(TimeZone.getTimeZone("UTC"));
        pickupTimeStr =outputFmt.format(time);
        System.out.println(outputFmt.format(time));
    }

2 个答案:

答案 0 :(得分:0)

由于您只有hh:mm,因此要创建yyyy-MM-dd HH:mm,您需要给它yyyy-MM-dd

try {
    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH) + 1;
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    pickDate = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US)
            .parse(year+"-"+month+"-"+day+" " + pickupTime);

} catch (ParseException e) {
    e.printStackTrace();
}

答案 1 :(得分:0)

这是我的解决方法:

private void returnPickupTimeUTC() {
    try {
        String pickupTime = "04:05 pm";

        // Use this to get hour and minute from `pickupTime`
        SimpleDateFormat defaultSdf = new SimpleDateFormat("hh:mm a", Locale.getDefault());
        Calendar pickUpDate = Calendar.getInstance(Locale.getDefault());
        pickUpDate.setTime(defaultSdf.parse(pickupTime));

        // Set the hour and minute for current date.
        Calendar now = Calendar.getInstance(Locale.getDefault());
        now.set(Calendar.HOUR, pickUpDate.get(Calendar.HOUR));
        now.set(Calendar.MINUTE, pickUpDate.get(Calendar.MINUTE));

        // Convert `pickupTime` from "hh:mm a" to "yyyy-MM-dd HH:mm:ss" with UTC time zone.
        SimpleDateFormat utcSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        utcSdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        pickupTimeStr = utcSdf.format(now.getTime());
        System.out.println(pickupTimeStr);
    } catch (ParseException e) {
        e.printStackTrace();
    }
}
相关问题