Получение локального часового пояса устройства

2010-06-14 02: 21: 49 + 0400 или 2010-06-14 02: 21: 49-0400

Есть способ конвертировать эту строку в дату в соответствии с местным часовым поясом машины с форматом 2010-06-14 02:21 AM

Добавляя к тому, что @ org.life.java и @Erica сказали, вот что вам следует делать

String dateStr = "2010-06-14 02:21:49-0400"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ"); TimeZone tz = TimeZone.getDefault(); sdf.setTimeZone(tz); Date date = sdf.parse(dateStr); sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a"); String newDateStr = sdf.format(date); System.out.println(newDateStr); 

Тогда newDateStr будет вашей новой форматированной строкой даты.


UPDATE @xydev, пример, который я вам дал, см. Полный исходный код ниже:

 /** * */ package testcases; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; /** * @author The Elite Gentleman * */ public class Test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try { String dateStr = "2010-06-14 02:21:49-0400"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ"); TimeZone tz = TimeZone.getDefault(); sdf.setTimeZone(tz); Date date = sdf.parse(dateStr); sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss a"); String newDateStr = sdf.format(date); System.out.println(newDateStr); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } 

Выход: 2010-06-14 08:21:49 AM

Использование SimpleDateFormat

 String string1 = "2010-06-14 02:21:49-0400"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ") sdf.setTimeZone(tz); Date date = sdf.parse(string1); 

Примечание. Я не уверен, что тот же класс доступен в andriod.

Вы можете делать всевозможные форматирование и локализацию дат, используя класс DateFormat. В начале страницы API есть очень хорошая, полная документация: http://download.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html

Большинство обычных случаев можно обрабатывать со встроенным объектом SimpleDateFormat. Его подробности здесь: http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

Строка шаблона вывода SimpleDateFormat для приведенного выше примера будет выглядеть так:

 yyyy-MM-dd hh:mm a 

Будьте осторожны, если вы работаете в эмуляторе, ваш часовой пояс всегда GMT. Я просто потратил 2 часа на то, чтобы понять, почему мое приложение не дает мне подходящее время (тот, который отображается на моем компьютере), пока я не понял, что это из-за эмулятора.

Чтобы проверить, что вы используете эмулятор, используйте

 if (Build.PRODUCT.contains("sdk")){ // your code here for example if curtime has the emulator time // since midnight in milliseconds then curtime += 2 * 60 * 60 * 1000; // to add 2 hours from GMT } 
Intereting Posts
Обратные противоположные цвета Java.lang.RuntimeException: Невозможно создать экземпляр активности ComponentInfo … java.lang.ClassNotFoundException Связано с представлением для перемещения внутри RelativeLayout Что-то странное происходит при слишком быстрой прокрутке RecyclerView Изменить высоту настраиваемого диалога в диалоговом окне диалога Разделители вкладок не отображаются в ICS Убедитесь, что включен «Google Maps Android API v2». Я получаю эту ошибку, когда пытаюсь выполнить Google Maps Отображение контактов только с телефонными номерами с использованием намерения ACTION_PICK в Android-устройстве JobScheduler: контроль за задержкой от ограничений, связанных с выполняемой работой Множество TypeFace в одиночном TextView ClassNotFoundException при раздувании библиотеки привязки с использованием Xamarin Могут ли Android Instant Apps быть интегрированы с гибридным приложением? Создание автономного объекта из результата realm в android Как отобразить AlertDialog в фрагменте? Android – несколько полей EditText при изменении размера окна