将服务器时间转换为android

时间:2016-02-13 09:29:20

标签: java android

我正在处理一个项目,我想使用GMT将服务器时间转换为本地时间。 例如我的服务器在美国密歇根州,我住在巴黎(法国),服务器时间是10:52,我希望转换到我当地的时间16:52 我使用下面的代码,它似乎不起作用。这转换时间使用GMT +12而不是+6,我不知道为什么请帮助我!!!!!!

public String GettingHeure(Context c, String date){
    SimpleDateFormat datechanged = new SimpleDateFormat("HH:MM", Locale.getDefault());
    Date dates = null;
    String heureChanged = null;
    try {
        SimpleDateFormat formatter = new SimpleDateFormat("hh:mm",Locale.getDefault());
        dates = formatter.parse(date);

        TimeZone tz = TimeZone.getDefault();
        formatter.setTimeZone(TimeZone.getTimeZone(tz.getID()));

        System.out.println("local time : " + dates);
        System.out.println("time in GMT : " + formatter.format(dates));
        //Toast.makeText(c.getApplicationContext(), "String : "+ date+" "+formatter.format(dates), Toast.LENGTH_LONG).show();
        heureChanged = formatter.format(dates);
        SimpleDateFormat formatters = new SimpleDateFormat("hh:mm");

        Date datess = formatters.parse(heureChanged);

        System.out.println("local time : " + datess);
        System.out.println("time in GMT : " + formatters.format(datess));
        heureChanged = formatter.format(datess);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return heureChanged;

1 个答案:

答案 0 :(得分:1)

如果我正确理解您的问题,您希望在时区之间转换时间。这是执行此操作的代码。

    public void convertDate(Date d) {  

    //You are getting server date as argument, parse your server response and then pass date to this method

    SimpleDateFormat sdfAmerica = new SimpleDateFormat("hh:mm:ss");

    String actualTime = sdfAmerica.format(d);
    //Changed timezone
    TimeZone tzInAmerica = TimeZone.getTimeZone("CST");
    sdfAmerica.setTimeZone(tzInAmerica);

    String convertedTime = sdfAmerica.format(d);

    System.out.println("actual : " + actualTime + "  converted " + ConvertedTime);

    return convertedTime;
    }

希望这会有所帮助。