【问题标题】:Can I convert hh:mm format to yyyy-MM-dd HH:mm:ss?我可以将 hh:mm 格式转换为 yyyy-MM-dd HH:mm:ss 吗?
【发布时间】:2019-05-07 21:47:02
【问题描述】:

我有一个格式为 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));
    }

【问题讨论】:

标签: android date datetime


【解决方案1】:

这是我的解决方案:

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();
    }
}

【讨论】:

  • 很高兴听到这个消息,如果其中一个答案对您有用,那么您应该将其标记为答案。
【解决方案2】:

由于你只有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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多