Android/Joda time - 将 dateTime 转换为我本地的 DateTime
Android/Joda time - Convert dateTime to my local DateTime
我正在尝试将服务器日期字符串转换为我的 local/device 设置的本地时间,但没有成功。我正在使用 Joda 时间库。
我想做什么:
private static String FORMAT_DATE_SERVER = "YYYY-MM-dd'T'HH:mm:ssZ";
public static DateTime parseServerDateToLocal(String raw_date) {
DateTime result = DateTime.parse(raw_date, DateTimeFormat.forPattern(FORMAT_DATE_SERVER)).withZone(DateTimeZone.getDefault());
return result;
}
仍然是 return 来自服务器的 DateTime。我无法做到 return 正确的 hour/datetime。
我读了很多 post 关于这个的内容,但我没能让它变得简单、干净和有效。
试试这个代码
例子
将格式为“2011-06-23T15:11:32”的日期字符串转换为时区。
private String getDate(String dateString) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date value = null;
try {
value = formatter.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy hh:mmaa");
dateFormatter.setTimeZone(TimeZone.getDefault());
String dt = dateFormatter.format(value);
return dt;
}
我找到的解决方案:
在您的应用程序 class 或其他地方,初始化 JodaTimeAndroid:
JodaTimeAndroid.init(this);
在此初始化之后,日期将自动转换为您所在的区域,并进行适当的偏移。这就是您解析数据的方式:
private static String FORMAT_DATE_SERVER = "yyyy-MM-dd'T'HH:mm:ssZ";
private static String raw_date = "2015-06-18T08:52:27Z";
public static DateTime parseServerDateToLocal(String raw_date) {
return DateTime.parse(raw_date, DateTimeFormat.forPattern(FORMAT_DATE_SERVER));
}
在我的例子中,使用偏移量 (+2h),返回的数据是:
2015-06-18T10:52:27.000+02:00
我正在尝试将服务器日期字符串转换为我的 local/device 设置的本地时间,但没有成功。我正在使用 Joda 时间库。
我想做什么:
private static String FORMAT_DATE_SERVER = "YYYY-MM-dd'T'HH:mm:ssZ";
public static DateTime parseServerDateToLocal(String raw_date) {
DateTime result = DateTime.parse(raw_date, DateTimeFormat.forPattern(FORMAT_DATE_SERVER)).withZone(DateTimeZone.getDefault());
return result;
}
仍然是 return 来自服务器的 DateTime。我无法做到 return 正确的 hour/datetime。
我读了很多 post 关于这个的内容,但我没能让它变得简单、干净和有效。
试试这个代码
例子 将格式为“2011-06-23T15:11:32”的日期字符串转换为时区。
private String getDate(String dateString) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date value = null;
try {
value = formatter.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy hh:mmaa");
dateFormatter.setTimeZone(TimeZone.getDefault());
String dt = dateFormatter.format(value);
return dt;
}
我找到的解决方案:
在您的应用程序 class 或其他地方,初始化 JodaTimeAndroid:
JodaTimeAndroid.init(this);
在此初始化之后,日期将自动转换为您所在的区域,并进行适当的偏移。这就是您解析数据的方式:
private static String FORMAT_DATE_SERVER = "yyyy-MM-dd'T'HH:mm:ssZ";
private static String raw_date = "2015-06-18T08:52:27Z";
public static DateTime parseServerDateToLocal(String raw_date) {
return DateTime.parse(raw_date, DateTimeFormat.forPattern(FORMAT_DATE_SERVER));
}
在我的例子中,使用偏移量 (+2h),返回的数据是:
2015-06-18T10:52:27.000+02:00