如何转换时间为每时区选择在android



我的应用程序下载购物详情。
例子:购物详情于伦敦时间5时30分下载。
现在,更改任何其他时区,因此将下载的时间转换为每个选定的时区。
时区正在从"日期/时间"下的设置更改。如何通过编程实现这个 ?那么如何将下载的时间转换为按照时区选择 ?

试试这个,

我假设您在伦敦时间中午12点下载了购物详细信息。我使用HH假设你使用24小时格式。如果要将其转换为设备默认时区,请使用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){
}

没有,没有用于更改时间或时区的api。无法通过编程方式更改手机的时区。

基于@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");

相关内容

  • 没有找到相关文章

最新更新