Android将中央时间转换为本地时间

nor*_*dig 4 java timezone android timestamp

我有一个MySql数据库,存储我插入的每个记录的时间戳.我将该时间戳作为字符串添加到我的Android应用程序中.我的数据库位于具有CST TimeZone的服务器上.我想将该CST时间戳转换为Android设备的本地时间.

有人可以帮忙吗?

Ant*_*ony 7

getTimeZone.getDefault根据Android文档使用结合使用.

public static synchronized TimeZone getDefault()

获取默认时区.返回默认时区.

所以,既然你知道CST是格林威治标准时间-6:00,并且你得到一个当地时区,说用户是+9:00(日本),你就知道将你的MySQL数据库时间调整+15小时(9 - ( -6)).或者如果他们在迈阿密(EST,-5),你可以通过增加一小时(-5 - ( - 6))进行调整.如果在俄勒冈州波特兰市(PST-8),你会减去2小时(-8 - ( - 6)).

所以你真的需要获得当地时区偏移量并将其输入基本方程式: TimeZone.getDefault + 6你将知道要向本地数据库添加或减去的内容.(+6因为 - ( - 6)总是达到+6).

如果我知道编写Java的第一件事,我会采取额外的步骤并编写一些示例代码,但是唉,我只对脚本足够聪明.

Java的粗暴尝试

我已经说过我不知道如何做Java或面向对象的任何事情,对吧?

这是一个粗略的尝试,只是围绕Android文档.任何细则或简单的"甚至不接近"的评论都欢迎.请记住,我已经从快速搜索中找到了正确的方法和类,我想出了一个简单的等式,用于将时区偏移量转换为CST,所以我不是笨蛋,只是没有人知道什么时候可以独自离开.无论如何,粗略的尝试:

System now = System.currentTimeMillis (); //Gets current local time in ms
TimeZone local_tz = TimeZone.getDefault();  //Gets current local TZ of phone
tz_offset_gmt = local_tz.getOffset(now)/3600000; // Get Offset in ms, divide by 3600000
tz_offset_cst = tz_offset_gmt + 6;  // add offset to 6 to get current TZ offset to CST.
Run Code Online (Sandbox Code Playgroud)

哪里接近如何在java中这样做?