如何根据 android 中的时区选择转换时间?
How to convert time as per Timezone selection in android?
我的应用正在下载购物详情。
例子 :
伦敦时间 5:30 下载购物详情。
现在,更改任何其他时区,因此根据所选时区转换下载时间。
Date/time 下的设置正在更改时区。
如何以编程方式实现此?
所以如何根据时区选择转换下载时间?
不,没有用于更改时间或时区的 API。无法以编程方式更改 phone 的时区。
试试这个,
我假设您已经在伦敦时间 12:00 下午下载了购物详情。假设您使用的是 24 小时格式,我正在使用 HH。如果您想将其转换为设备默认时区,请使用 DateFormat 设置时区并格式化现有时间。
TimeZone.getDefault() 为设备提供默认时区。
try {
DateFormat utcFormat = new SimpleDateFormat("HH:mm");
utcFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = utcFormat.parse("12:00");
DateFormat deviceFormat = new SimpleDateFormat("HH:mm");
deviceFormat.setTimeZone(TimeZone.getDefault()); //Device timezone
String convertedTime = deviceFormat.format(date);
} catch(Exception e){
}
基于@Raghavendra 解决方案,这可以是一种可移植的方法,如下所示:
/**
* converts GMT date and/or time with a certain pattern into Local Device TimeZone
* Example of dateTimePattern:
* "HH:mm",
* "yyyy-MM-dd HH:mm:ss",
* "yyyy-MM-dd HH:mm"
* Ex of dateTimeGMT:
* "12:00",
* "15:23",
* "2019-02-22 09:00:21"
* This assumes 24hr format
*/
@SuppressLint("SimpleDateFormat")
private String getDeviceDateTimeFromGMT(String dateTimePattern, String dateTimeGMT) {
try {
DateFormat utcFormat = new SimpleDateFormat(dateTimePattern);
utcFormat.setTimeZone(TimeZone.getTimeZone("GMT")); // convert from GMT TimeZone
Date date = utcFormat.parse(dateTimeGMT);
DateFormat deviceFormat = new SimpleDateFormat(dateTimePattern);
deviceFormat.setTimeZone(TimeZone.getDefault()); // Device TimeZone
return deviceFormat.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
用法:
getDeviceDateTimeFromGMT("yyyy-MM-dd HH:mm", "2019-02-22 16:07");
getDeviceDateTimeFromGMT("yyyy-MM-dd HH:mm:ss", "2019-02-22 16:07:13");
getDeviceDateTimeFromGMT("H:mm", "16:07");
我的应用正在下载购物详情。
例子 :
伦敦时间 5:30 下载购物详情。
现在,更改任何其他时区,因此根据所选时区转换下载时间。
Date/time 下的设置正在更改时区。
如何以编程方式实现此?
所以如何根据时区选择转换下载时间?
不,没有用于更改时间或时区的 API。无法以编程方式更改 phone 的时区。
试试这个,
我假设您已经在伦敦时间 12:00 下午下载了购物详情。假设您使用的是 24 小时格式,我正在使用 HH。如果您想将其转换为设备默认时区,请使用 DateFormat 设置时区并格式化现有时间。
TimeZone.getDefault() 为设备提供默认时区。
try {
DateFormat utcFormat = new SimpleDateFormat("HH:mm");
utcFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = utcFormat.parse("12:00");
DateFormat deviceFormat = new SimpleDateFormat("HH:mm");
deviceFormat.setTimeZone(TimeZone.getDefault()); //Device timezone
String convertedTime = deviceFormat.format(date);
} catch(Exception e){
}
基于@Raghavendra 解决方案,这可以是一种可移植的方法,如下所示:
/**
* converts GMT date and/or time with a certain pattern into Local Device TimeZone
* Example of dateTimePattern:
* "HH:mm",
* "yyyy-MM-dd HH:mm:ss",
* "yyyy-MM-dd HH:mm"
* Ex of dateTimeGMT:
* "12:00",
* "15:23",
* "2019-02-22 09:00:21"
* This assumes 24hr format
*/
@SuppressLint("SimpleDateFormat")
private String getDeviceDateTimeFromGMT(String dateTimePattern, String dateTimeGMT) {
try {
DateFormat utcFormat = new SimpleDateFormat(dateTimePattern);
utcFormat.setTimeZone(TimeZone.getTimeZone("GMT")); // convert from GMT TimeZone
Date date = utcFormat.parse(dateTimeGMT);
DateFormat deviceFormat = new SimpleDateFormat(dateTimePattern);
deviceFormat.setTimeZone(TimeZone.getDefault()); // Device TimeZone
return deviceFormat.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
用法:
getDeviceDateTimeFromGMT("yyyy-MM-dd HH:mm", "2019-02-22 16:07");
getDeviceDateTimeFromGMT("yyyy-MM-dd HH:mm:ss", "2019-02-22 16:07:13");
getDeviceDateTimeFromGMT("H:mm", "16:07");