从TimeStamp获取正确的时间

时间:2014-01-17 13:05:54

标签: android time calendar android-calendar

我收到以下长1389967092作为时间戳。这应该代表......

格林尼治标准时间:星期五,2014年1月17日13:58:12 GMT

OR

我的时区:2014年1月17日下午2:58:12 GMT + 1

但是我在GMT + 1,但我想要展示的时间是GMT代表。我正在尝试以下方法:

    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(timeStamp);
    Date date = cal.getTime();
    Log.d(Point.class.getSimpleName(), date.getHours() + ":" + date.getMinutes());

但这打印12:58

我做错了什么?

编辑 - 对答案的回应

我正在使用它的代码打印1969-12-13 10:54:48

    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(1389967092*1000);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));

    Log.d(Point.class.getSimpleName(), sdf.format(calendar.getTime));

1 个答案:

答案 0 :(得分:2)

默认Calendar.getInstance会根据您设备的时区返回时间。但是,您可以请求不同的时区:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));

为了根据不同的时区打印当前时间,您可以使用SimpleDateFormat。例如:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
Log.d(TAG, sdf.format(new Date()));