2014-11-28 1 views
0

У меня есть дата в формате (например) «28-11-2014 00:00», и я хочу показать в android по местоположению. Я имею в виду автоматическое определение местоположения системы и формат для этого местоположения.Как установить время по местоположению Android

Пример:

  • Лондон 28-11-2014 00:00
  • Нью-Йорк 28-11-2014 19:00
  • Париж 28-11-2014 01:00

В разных странах пользователи будут видеть разные тексты. Кто-то может мне помочь? Во всяком случае, для тестирования того, что в эмуляторе, что я могу сделать для изменения языка системы?

благодаря

Edit: я отправил решение ниже

ответ

2

вы пробовали это:

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

При этом вы можете получить зону времени, с которого приложение работает. Или вы хотите отображать в своих часовых поясах по всему миру?

После этого вы можете импортировать их вручную, проверив данные в Интернете или попробуйте googling для API, которые включают такие вещи.

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()); 
+0

Во-первых, спасибо за ваш ответ, но у меня есть определенное время (пример 19:00), и я хочу преобразовать в местоположение системы. – user1851366

+0

Прошу прощения, я не понимаю. У вас есть время и ваш телефон в Лондоне. то что вы хотите увидеть? – Chk0nDanger

+0

Я хочу, чтобы люди в Париже (например), видели в другой раз. Как в примере, если я покажу 19:00 в Лондоне, люди в Париже будут видеть 20:00. Поэтому время форматирования по местоположению – user1851366

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)); 
Смежные вопросы