Intereting Posts
Ошибка: выполнение выполнено для задачи ': backend: appengineEndpointsGetClientLibs Вкладки вкладки в Android 4 с поддержкой библиотеки (ActionBarSherlock) В чем разница между старой цепью инструментов android ndk r9 и Android ndk r9 на Windows 64 Как создать AVD для Android 4.0.3? (Не удалось найти «userdata.img») Кордова – отказывается выполнять обработчик события inline, поскольку он нарушает следующий контент. Политика безопасности Только исходный поток, создавший иерархию представлений, может коснуться его представлений Что такое армеаби и почему они его используют Как повернуть деятельность, я имею в виду: изменение ориентации экрана с помощью Espresso? Запуск Android Game Development Android: обнаружит, когда запущено другое действие (или ваша деятельность теряет фокус) Начальная активность Android при выборе пункта меню MediaMetadataCompat METADATA_KEY_ART только устанавливает изображение в первый раз Как исключить модуль из всех зависимостей, но оставить явное объявление Gradle Как показать или прочитать файл docx Как сгруппировать сетку 3×3 переключателей?

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

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

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

Solutions Collecting From Web of "Получение локального часового пояса устройства"

Добавляя к тому, что @ 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 }