如何按位置Android设置时间

时间:2014-11-28 00:06:05

标签: android

我有一个格式的日期(例如)" 28-11-2014 00:00",我想按位置在android中显示。我的意思是,automatcliy系统检查该位置的位置和格式。

示例:

  • 伦敦28-11-2014 00:00
  • 纽约28-11-2014 19:00
  • 巴黎28-11-2014 01:00

在不同国家/地区,用户会看到不同的文字。有人可以帮帮我吗? 无论如何,为了在模拟器中测试,我可以为更改系统区域设置做些什么?

感谢

编辑:我在

下面发布了一个解决方案

3 个答案:

答案 0 :(得分:2)

你试过这个:

Most applications will use TimeZone.getDefault() 
which returns a TimeZone based on the time zone where the program is running.

通过此功能,您可以获得运行应用程序的时区。或者您想在世界各地的App时区上显示?

然后,您可以通过检查互联网上的数据手动导入它们,或者尝试使用Google搜索包含此类内容的API。

答案 1 :(得分:2)

我用Google TimeZone API完成了这项工作。

curl -X GET https://maps.googleapis.com/maps/api/timezone/json?location=39.6034810,-119.6822510&timestamp=1331161200&key=API_KEY

{
    "dstOffset" : 0.0,
    "rawOffset" : -28800.0,
    "status" : "OK",
    "timeZoneId" : "America/Los_Angeles",
    "timeZoneName" : "Pacific Standard Time"
}

您可以使用以下代码获取当地时间。

TimeZone timeZone = new SimpleTimeZone((int) getRawOffset(), getTimeZoneId());
Calendar cal = Calendar.getInstance();
cal.setTimeZone(timeZone);
String localDate = new SimpleDateFormat("MM-dd-yyyy HH:mm").format(cal.getTime());

答案 2 :(得分:1)

我得到了自己的答案!这是解决方案

    //my format
    String format = "yyyy-MM-dd HH:mm";
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    sdf.setTimeZone(TimeZone.getTimeZone("CET"))
    //my date
    String dateInString = "2014-11-28 11:00";
    Date date = sdf.parse(dateInString);

    //my solution
    sdf.setTimeZone(TimeZone.getDefault());
    System.out.format("%30s %s\n", format, sdf.format(date));
    //example
    sdf.setTimeZone(TimeZone.getTimeZone("CET"));
    System.out.format("%30s %s\n", format, sdf.format(date));
    sdf.setTimeZone(TimeZone.getTimeZone("PST"));
    System.out.format("%30s %s\n", format, sdf.format(date));