Android текущий часовой пояс

Как настроить дату и время на Android

Купив новый мобильный гаджет, пользователи могут столкнуться с проблемой неправильно заданных часовых поясов, текущей даты и времени. Решить ее, впрочем, можно достаточно просто, и в этом руководстве мы расскажем, как настроить дату и время на смартфоне под управлением Андроид.

Устанавливаем параметры времени

Чтобы установить время на андроиде, нужно выполнить несколько простых действий:

Шаг 1. Запустите Настройки, пройдите в категорию «Система и устройство» и выберите раздел «Дополнительно».

Шаг 2. Нажмите кнопку «Дата и время».

Шаг 3. В открывшемся окне вы сможете выставить время, поменять дату, выбрать формат отображения времени и даты, установить часовой пояс, а также задать автоматическое получение настроек.

Обратите внимание: параметры даты и времени могут быть скрыты в других подразделах, например, в расширенных настройках. Это зависит от версии Android.

Перейти к параметрам даты и времени можно и другим путем – через приложение Часы:

Шаг 1. Запустите приложение Часы.

Шаг 2. Нажмите кнопку параметров.

Шаг 3. Нажмите на кнопку «Настройки даты и времени».

Почему сбивается время на Андроид

Синхронизация даты и времени на смартфонах Android иногда может работать некорректно, из-за чего происходит сбой настроек. Чтобы исправить эту проблему, необходимо отключить параметры «Дата и время сети» и «Часовой пояс сети», после чего задать настройки вручную.

Если вопрос не решится, стоит выполнить сброс Android до заводских настроек и заново установить все параметры.

Заключение

Следуя рекомендациям из этого руководства, вы всегда будете знать точное время и дату на вашем гаджете.

Источник

Проблемы времени и часовых поясов в Android и пути их решения

Предположим, вы уже давно используете Android, а потому может показаться, что он прекрасно справляется с задачами синхронизации времени – будильники срабатывают вовремя, каких-то явных отклонений времени не наблюдается и т. д. Однако уверены ли вы полностью в том, откуда Android на самом деле получает данные о точном времени и часовых поясах? Если у вас есть хоть какие-то сомнения о том, как это работает — добро пожаловать под кат.

В Android существует две проблемы со временем: это его непредсказуемая синхронизация и необходимость в актуализации данных о часовых поясах даже в самой свежей версии ОС.

Предыстория: Android является мобильной ОС, базирующейся на ядре Linux, он спокойно подключается к интернету и, конечно же, можно предположить, что синхронизация времени осуществляется с помощью NTP, однако, это не так. Исторически сложилось, что Android был предназначен для использования исключительно в мобильных телефонах (вспомните версию 1.6). При этом только к 3 мажорной версии он обзавёлся интерфейсом для планшетов и начали́сь другие подвижки к унификации интерфейса и начинки ОС. Однако даже версии 4.4 и Android L получают сигналы точного времени теми же методами, что их получала Nokia 3310 и другие, более ранние GSM/3GPP телефоны, т. е. от вышек сотовой связи при регистрации в сети (при подключении к вышке). При этом планшеты или другие устройства без модуля связи, в принципе не имеют возможности синхронизировать время автоматически.

К великому сожалению, чтобы научить Android синхронизировать время полностью автоматически с помощью NTP нам понадобиться root доступ ибо API для точной установки времени в Android ныне отсутствует.

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

Далее, необходимо установить приложение ClockSync, которое и будет выступать для нас альтернативой демону синхронизации времени с помощью NTP.

На скриншотах видно, что разница с точным временем оказалась достаточно маленькой, однако, бывают разные ситуации, у некоторых время на устройстве может даже плавать туда-сюда поскольку оператор не удосужился навести порядок у себя на БС.

Читайте также:  Андроид минимальная ширина 392 dp

Убедившись, что всё работает, настроим автоматическую синхронизацию в программе ClockSync. Для повышения точности я рекомендую включить опции «Режим высокой точности» и «Только через WI-FI». Если с первой опцией всё понятно из описания в программе (см. скриншот ниже), то вторую опцию я рекомендую включить в первую очередь не из соображений экономии мобильного трафика, а из-за того, что мобильный интернет не способен гарантировать хоть сколько-нибудь стабильные задержки.

Помимо этого я рекомендую включить опцию «При включении», чтобы лишний раз не выводить устройство из глубокого сна и тем самым сэкономить энергию.

В связи с масштабными изменениями часовых поясов в РФ осенью этого года необходимо уже сейчас задуматься об актуализации информации о них на всех устройствах и если с поддерживаемыми настольными ОС проблем не возникает, то в Android даже самая свежая версия ОС содержит устаревшие данные. Для того чтобы в этом убедиться устанавливаем TimeZone Fixer и наблюдаем неприглядную картину.

Автор программы TimeZone Fixer предупреждает нас, что обновление файлов данных о часовых поясах может полностью «сломать» устройство и даже даёт рекомендации о том как обезопасить себя от дополнительных проблем, хоть случаи проблем единичные и очень специфичные — это действительно хорошая забота о простых пользователях.

Только поэтому я и внёс этот кусочек в статью, он хоть и не имеет непосредственного отношения к проблеме, но это действительно хороший пример заботы о пользователях. В то же время предупреждение насчёт версий 4.3+ вызвано лишь малым количеством отзывов о программе для устройств с новыми версиями ОС, поэтому, пожалуйста, после использования обязательно напишите о́тзыв об этом приложении.

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

С удовольствием отвечу на любые вопросы или внесу дополнения, которые сообщество посчитает необходимыми, однако, хочется избежать перегруженности статьи дополнительной информацией, дабы придерживаться формата компактного руководства по решению конкретной проблемы.

UPD: Эта инструкция полностью решает проблему часовых поясов только для версий младше 4.4. С версии 4.4 нужен дополнительный патчинг, пока вопрос находится на стадии исследования возможностей для создания юзер-френдли решения.

Источник

Как получить часовой пояс из android mobile?

Я хочу получить часовой пояс с мобильного телефона Android при нажатии кнопки.

8 ответов:

вы пробовали использовать TimeZone.getDefault() :

большинство приложений будет использовать часовой пояс.getDefault() который возвращает часовой пояс на основе о часовом поясе, в котором выполняется программа.

часовой пояс GMT + 09: 30 Timezon id:: Австралия / Дарвин

он возвращает выбранный пользователем часовой пояс.

Мне нужно смещение это не только включало время экономии дневного света, но и как numerial. Вот код, который я использовал в случае, если кто-то ищет пример.

Я получаю ответ от «3.5» (3:30′) это то , что я ожидал бы в Тегеране, Иран зимой и «4.5» (4:30′) на лето .

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

для получения currect часовой пояс:

согласно http://developer.android.com/reference/android/text/format/Time.html Вы должны использовать время.getCurrentTimezone () для получения текущего часового пояса устройства.

Самое Простое Решение С Простым Форматом Даты: SimpleDateFormat («ZZZZZ»):

часовой пояс часовой пояс = часовой пояс.getDefault(); часовой пояс.getID();

Источник

Получить текущее время в данном часовом поясе: андроид

Я новичок в Android, и в настоящее время я сталкиваюсь с проблемой, чтобы получить текущее время с учетом часового пояса.

Я получаю часовой пояс в формате «GMT-7», т. е. строку. и у меня есть системное время.

есть ли чистый способ получить текущее время в указанном выше часовом поясе? Любая помощь приветствуется. Спасибо,

изменить : Пытаясь сделать это:

9 ответов

Я заставил его работать так:

java.время

как старые классы даты-времени в комплекте с Java, так и сторонняя библиотека Joda-Time были заменены java.время фреймворк, встроенный в Java 8 и более поздние версии. Эти классы вытесняют старые хлопотные классы даты-времени, такие как java.util.Date . См.В Oracle Учебник. Большая часть java.функциональность времени обратно портирована на Java 6 & 7 в ThreeTen-Backport и далее адаптированы к Android в ThreeTenABP.

кстати, никогда не ссылайтесь на смещение от-UTC С одной цифрой часов, таких как -7 , поскольку это нестандартно и будет несовместимо с различными протоколами и библиотеками. Всегда pad с нулем для второй цифры, например -07 .

Читайте также:  Замена для андроид авто

если у вас есть смещение, а не часовой пояс, используйте OffsetDateTime класса.

если у вас есть полный часовой пояс, который является смещением плюс набор правил для обработки аномалий, таких как летнее время (DST), а не просто смещение от-UTC, используйте ZonedDateTime класса.

текущее время в Америка/Денвер: 20:41:36.560

Joda Времени

вы можете использовать Joda Времени 2.7 в Android. Делает работу даты-времени гораздо легче.

зоны: Америка/Денвер | датавремя: 2016-07-11T20:50:17.668-06:00 | Выход: 20:50:17.668

Граф С Эпохи

я настоятельно рекомендую против отслеживание по времени по счету-с-эпохи. Но при необходимости вы можете извлечь Joda-Time внутренние миллисекунды-с-эпохи (Unix время, первый момент 1970 UTC), вызвав getMillis метод DateTime .

обратите внимание на использование 64-разрядного long , а не 32-бит int примитивные типы.

на java.время. Имейте в виду, что вы можете потерять данные, как Java.время держит разрешение до наносекунд. Переход от наносекунд к миллисекундам означает усечение до шести цифр десятичной доли секунды (3 цифры для миллисекунд, 9 для наносекунд).

Источник

Получить текущее время и дату на Android

Как получить текущее время и дату в приложении для Android?

Вы можете использовать:

В календаре есть много констант для всего, что вам нужно. Редактирование: документация по календарю

Вы можете ( но больше не нужно – см. Ниже!) Использовать android.text.format.Time :

Из ссылки, приведенной выше:

Класс Time – это более быстрая замена классов java.util.Calendar и java.util.GregorianCalendar. Экземпляр класса Time представляет собой момент времени, указанный со второй точностью.

ПРИМЕЧАНИЕ 1. Прошло несколько лет с тех пор, как я написал этот ответ, и речь идет о старом, специфичном для Android и теперь устаревшем классе. Google теперь говорит, что «[t] его класс имеет ряд проблем, и рекомендуется использовать GregorianCalendar ».

ПРИМЕЧАНИЕ 2. Хотя класс Time имеет toMillis(ignoreDaylightSavings) , это просто удобство перехода к методам, которые ожидают время в миллисекундах. Значение времени только точная до одной секунды ; Часть миллисекунд всегда равна 000 . Если в цикле вы делаете

Полученная последовательность повторит то же значение, например 1410543204000 , до следующей следующей секунды, и в это время 1410543205000 начнет повторяться.

Если вы хотите получить дату и время в определенном шаблоне, вы можете использовать следующее:

Для тех, кто предпочитает настраиваемый формат, вы можете использовать:

В то время как вы можете иметь шаблоны DateFormat, такие как:

На самом деле безопаснее устанавливать текущий часовой пояс на устройстве с помощью Time.getCurrentTimezone() , иначе вы получите текущее время в UTC.

Затем вы можете получить все поля даты, которые вы хотите, например:

См. Раздел android.text.format.Time для всех деталей.

ОБНОВИТЬ

Как многие люди указывают, Google говорит, что этот класс имеет ряд проблем и больше не должен использоваться:

У этого класса есть ряд проблем, поэтому рекомендуется использовать GregorianCalendar.

По историческим причинам при выполнении вычислений времени вся арифметика в настоящее время выполняется с использованием 32-битных целых чисел. Это ограничивает надежный временной диапазон, представляемый с 1902 года по 2037 год. Подробнее см. Статью в википедии о проблеме 2038 года. Не полагайтесь на это поведение; Он может измениться в будущем. Вызов switchTimezone (String) на дату, которая не может существовать, например, время стены, которое было пропущено из-за перехода на летнее время, приведет к дате в 1969 году (т.е. -1 или 1 секунде до 1 января 1970 UTC). Большая часть форматирования / синтаксического анализа предполагает текст ASCII и поэтому не подходит для использования с не-ASCII-скриптами.

Для текущей даты и времени используйте:

Чтобы указать текущее время, вы можете использовать System.currentTimeMillis() который является стандартным для Java. Затем вы можете использовать его для создания даты

И как упоминалось другими, чтобы создать время

Попробуйте таким образом. Все форматы приведены ниже, чтобы получить формат даты и времени.

Вы можете использовать код:

Здесь вы также можете получить дополнительные параметры форматирования для SimpleDateFormat .

Легко, вы можете проанализировать время, чтобы получить отдельные значения для текущего времени, а именно:

То же самое касается даты:

Существует несколько вариантов, поскольку Android – это в основном Java, но если вы хотите записать его в текстовом виде, следующий код будет делать трюк:

ТЛ; др

Детали

Остальные ответы, правда, устарели. Старые классы времени-времени оказались плохо спроектированными, запутанными и сложными.

Читайте также:  Живая сталь для андроид полная версия

java.time

Эти старые классы были заменены рамкой java.time .

  • Java 8 и более поздние версии: фреймворк java.time встроен.
  • Java 7 и 6: используйте обратный путь java.time .
  • Android: используйте эту завернутую версию этого backport .

Эти новые классы вдохновлены очень успешным проектом Joda-Time , определенным JSR 310 , и расширенным проектом ThreeTen-Extra .

См. Учебник Oracle .

Instant

Instant – это момент на временной шкале в формате UTC с разрешением до наносекунд .

Часовой пояс

Примените часовой пояс ( ZoneId ), чтобы получить ZonedDateTime . Если вы опустите часовой пояс, ваш часовой пояс вашего JVM неявно применяется. Лучше указать явно желаемый / ожидаемый часовой пояс.

Используйте правильные названия часовых поясов в формате continent/region такие как America/Montreal , Europe/Brussels или Asia/Kolkata . Никогда не используйте аббревиатуры 3-4 букв, такие как EST или IST поскольку они не являются стандартизованными и не уникальными.

Создание строк

Вы можете легко создать String в качестве текстового представления значения даты и времени. Вы можете использовать стандартный формат, свой собственный формат или автоматически локализованный формат.

ISO 8601

Вы можете вызвать методы toString для форматирования текста с использованием общего и разумного стандарта ISO 8601 .

Обратите внимание, что для ZonedDateTime метод toString расширяет стандарт ISO 8601, добавляя имя часового пояса в квадратных скобках. Очень полезная и важная информация, но не стандартная.

2016-03-22T20: 09: 01.613-08: 00 [Америка / Los_Angeles]

Пользовательский формат

Или укажите свой собственный шаблон форматирования с классом DateTimeFormatter .

Укажите язык для человеческого языка (английский, французский и т. Д.), Чтобы использовать при переводе названия дня / месяца, а также в определении культурных норм, таких как порядок года и месяца и даты. Обратите внимание, что Locale имеет никакого отношения к часовому поясу.

Локализации

Еще лучше, пусть java.time выполняет работу по локализации автоматически.

О java.time

Рамка java.time встроена в Java 8 и более поздних версий . Эти классы вытесняют неприятные старые устаревшие классы времени, такие как java.util.Date , java.text.SimpleDateFormat и java.text.SimpleDateFormat .

Проект Joda-Time , теперь в режиме обслуживания , советует перейти на java.time.

Дополнительную информацию можно найти в учебнике Oracle . И поиск Stack Overflow для многих примеров и объяснений. Спецификация – JSR 310 .

Где получить классы java.time?

  • Java SE 8 и SE 9 и более поздние версии
    • Встроенный.
    • Часть стандартного Java API с интегрированной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и SE 7
    • Большая часть функциональных возможностей java.time портирована на Java 6 и 7 в ThreeTen-Backport .
  • Android
    • Проект ThreeTenABP адаптирует ThreeTen-Backport (упомянутый выше) специально для Android.
    • См. Как использовать ….

Проект ThreeTen-Extra расширяет java.time с дополнительными классами. Этот проект является доказательством возможных будущих дополнений к java.time. Здесь вы можете найти полезные классы, такие как Interval , YearWeek , YearQuarter и т . Д.

Форматы формата даты

Вы также можете использовать android.os.SystemClock. Например, SystemClock.elapsedRealtime () даст вам более точные показания времени, когда телефон спит.

Это даст вам, например, 12:32.

Не забудьте импортировать android.text.format.Time;

Вы можете получить дату, используя:

Это даст вам результат в хорошей форме, как в этом примере: «2014/02/09».

Для настроенного формата времени и даты:

Результат выглядит как ниже: 2015-06-18T10: 15: 56-05: 00

Попробуйте это для меня тоже.

Это метод, который будет полезен для получения даты и времени:

Вы можете вызвать этот метод и получить текущие значения даты и времени:

Вы можете просто использовать следующий код:

Вы должны использовать класс Calender в соответствии с новым API. Класс Date теперь устарел.

Попробуйте этот код, на котором отображаются текущие дата и время

Если вам нужна текущая дата,

Если вам нужно текущее время,

Попробуйте использовать ниже код:

Чтобы получить короткую форматированную по дате строку String в локализованном формате устройства.

Я не могу понять, почему так много ответов являются жестко заданными форматами даты и времени, когда OS / Java поставляет правильную локализацию Дат и времени? Разве лучше не использовать форматы устройства, а не программиста?

Он также обеспечивает чтение дат в локализованных форматах:

Тогда это зависит от пользователя, задающего формат, который показывает даты и время, а не вы? Независимо от языков и т. Д. В разных странах с разными языками существуют разные форматы.

В пакете com.google.gson.internal.bind.util есть класс ISO8601Utils utils, поэтому, если вы используете GSON в своем приложении, вы можете использовать его.

Он поддерживает миллисы и часовые пояса, поэтому это довольно хороший вариант прямо из коробки.

Источник

Оцените статью