我有一个日期字符串,格式为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));
}
答案 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();
}
}