Можно ли преобразовать формат чч: мм в гггг-мм-дд чч: мм: сс? - PullRequest
0 голосов
/ 08 мая 2019

У меня есть строка даты в формате чч: мм.Я хочу преобразовать его в формат гггг-мм-дд чч: мм: сс, преобразовать в часовой пояс 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 голосов
/ 08 мая 2019

Вот мое решение:

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();
    }
}
0 голосов
/ 08 мая 2019

Так как у вас есть только 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...