Nano Hash - криптовалюты, майнинг, программирование

Как добавить часовой пояс пользователя в дату utc

как добавить часовой пояс пользователя в utc, я получаю дату utc, как это

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm:ss");
DateTime dateTime = formatter.withOffsetParsed().parseDateTime(getval[2]);
DateTime dateTimeUtc = dateTime.toDateTime(DateTimeZone.UTC);

Теперь я хочу получить часовой пояс пользователя и добавить его в utc, чтобы преобразовать его в локальное время.

ОБНОВЛЕНИЕ

я смог получить часовой пояс пользователя, но мог добавить его в utc

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-ddHH:mm:ss");
DateTime dateTime = formatter.withOffsetParsed().parseDateTime(getval[2]);

java.util.Calendar now = java.util.Calendar.getInstance();
java.util.TimeZone timeZone = now.getTimeZone();

DateTimeZone dtZone = DateTimeZone.forID(timeZone.getID());
DateTime dateTimeUtc = dateTime.toDateTime(DateTimeZone.UTC);
ofm.setDate(dateTimeUtc.toDateTime(dtZone).toDate());
04.06.2015


Ответы:


1

Этот код ниже может помочь вам получить часовой пояс пользователя

//get Calendar instance
Calendar now = Calendar.getInstance();

//get current TimeZone using getTimeZone method of Calendar class
TimeZone timeZone = now.getTimeZone();

//display current TimeZone using getDisplayName() method of TimeZone class
System.out.println("Current TimeZone is : " + timeZone.getDisplayName());

также ссылка ниже поможет вам преобразовать часовой пояс пользователя в UTC

ссылка

04.06.2015
  • К вашему сведению, ужасно неприятные классы даты и времени, такие как java.util.Date , java.util.Calendar и java.text.SimpleDateFormat теперь являются устаревшими, вытесненными java.time, встроенные в Java 8 и более поздние версии. См. учебник от Oracle. 27.07.2019

  • 2

    java.время

    На смену проекту Joda-Time пришла платформа java.time, определенная в JSR 310. Вот современное решение, использующее эти новые классы, найденные в Java 8 и более поздних версиях.

    Ваш формат ввода почти соответствует стандарту ISO 8601. В данных просто отсутствует T между частью даты и частью времени суток, а также отсутствует Z в конце, чтобы указать UTC. Посмотрите, можете ли вы сообщить издателю ваших данных об этом важном стандарте.

    String input = "2019-01-23T01:23:45.123456789Z" ;
    

    Классы java.time по умолчанию используют стандартные форматы. Поэтому нет необходимости указывать шаблон форматирования.

    Instant instant = Instant.parse( input ) ;
    

    Instant.toString() = 2019-01-23T01:23:45.123456789Z

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

    DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-ddHH:mm:ss" ) ;
    

    При отсутствии какого-либо индикатора часового пояса или смещения мы должны анализировать как LocalDateTime. Обратите внимание, что такой объект не представляет момент, не конкретную точку на временной шкале.

    String input = "2019-01-2301:23:45" ;
    LocalDateTime ldt = LocalDateTime.parse( input , f ) ;
    

    ldt.toString() = 2019-01-23T01:23:45

    Вы утверждаете, что эта дата и время должны представлять момент в формате UTC. Таким образом, мы можем применить смещение, используя константу ZoneOffset.UTC, чтобы получить OffsetDateTime.

    OffsetDateTime odt = ldt.atOffset( ZoneOffset.UTC ) ;
    

    odt.toString() = 2019-01-23T01:23:45Z

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

    Укажите правильное название часового пояса в формате Continent/Region, например America/Montreal, Africa/Casablanca или Pacific/Auckland. . Никогда не используйте сокращения из 2-4 букв, такие как EST или IST, так как они не соответствуют часовым поясам, не стандартизированы и даже не уникальны(!).

    ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
    ZonedDateTime zdt = odt.atZoneSameInstant( z ) ;
    

    zdt.toString() = 2019-01-23T02:23:45+01:00[Африка/Тунис]

    Как видите, Тунис в этот день опережал UTC на час. Таким образом, время дня кажется 2:00, а не 1:00.

    27.07.2019

    3

    Вот небольшой пример, который получает разницу из списка часовых поясов (в часах):

        import java.util.Date;
        import java.util.TimeZone;
        public class StackOverflowTimeZone {
            public static void main(String[] a) {
                Date date = new Date();
                for(int index = 0; index < TimeZone.getAvailableIDs().length; index++) {
                    System.out.println(TimeZone.getAvailableIDs()[index] + " offset from UTC: " + TimeZone.getTimeZone(TimeZone.getAvailableIDs()[index]).getOffset(date.getTime()) / (60 * 60 * 1000) + " hours.");
                }
            }
        }
    

    Абстрактный класс TimeZone был разработан для получения смещения назначенного часового пояса от универсального скоординированного времени (UTC). Существует список часовых поясов, который можно найти с помощью метода TimeZone.getAvailableIDs(). После получения смещения вам нужно будет сделать несколько небольших вычислений, чтобы узнать, опережает или отстает указанный часовой пояс от UTC. Знак (+/-) вашего вывода должен соответствовать тому, опережает или отстает указанный часовой пояс от UTC.

    04.06.2015
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..