【问题标题】:Convert a date and time string according to UTC format根据 UTC 格式转换日期和时间字符串
【发布时间】:2012-11-08 12:18:00
【问题描述】:
我有一个从本地数据库获取的日期字符串2012-11-21 13:11:25。我必须根据UTC 设置将其转换并显示在特定屏幕上。所以如果它的GMT+05:30 应该在屏幕上显示为2012-11-21 18:41:25。我该如何进行这种转换。我检查了一些问题,但没有解决。
我能够得到一个返回类似Wed Nov 21 13:11:25 GMT+05:30 2012的日期对象,之后我需要得到18:41:25的时间和11-21-2012的日期
提前致谢
【问题讨论】:
标签:
android
date
time
utc
【解决方案1】:
//This is my input date
String dtStart = "2019-04-24 01:22 PM";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm a");
Date date = null;
try {
date = format.parse(dtStart);
getDateInUTC(date)
} catch (ParseException e) {
e.printStackTrace();
}
//此方法用于将日期转换为某种UTC格式
public static String getDateInUTC(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateAsString = sdf.format(date);
System.out.println("UTC" + dateAsString);
return dateAsString;
}
【解决方案2】:
从当前时间获取 UTC:
public String getCurrentUTC(){
Date time = Calendar.getInstance().getTime();
SimpleDateFormat outputFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
outputFmt.setTimeZone(TimeZone.getTimeZone("UTC"));
return outputFmt.format(time);
}
【解决方案3】:
获取所需格式的格式化日期字符串的最佳方法是
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String formatted = dateFormat.format(date);
【解决方案4】:
您的df 和inputFmt 必须使用相同的格式。
但我认为你应该这样做:
Date myDate = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
calendar.setTime(myDate);
Date time = calendar.getTime();
SimpleDateFormat outputFmt = new SimpleDateFormat("MMM dd, yyy h:mm a zz");
String dateAsString = outputFmt.format(time);
System.out.println(dateAsString);