Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
ящюр
97 / 97 / 24
Регистрация: 15.03.2013
Сообщений: 520
Записей в блоге: 1
#1

Время. Перевод согласно часовым поясам - Программирование Android

31.01.2014, 22:48. Просмотров 725. Ответов 0
Метки нет (Все метки)

есть filetime 130358883000000000 , перевожу в нормальный вид
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
long pwdLastSet = Long.parseLong("130358883000000000");
    Log.i(TAG,"long value : "+pwdLastSet);
    long javaTime = pwdLastSet - 0x19db1ded53e8000L;
    javaTime /= 10000L;
  
    Date today = new Date(javaTime);
    SimpleDateFormat sdf2 = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    
    String newDateString = sdf2.format(today);
    
    Log.i(TAG,"Date 1changed format :"+newDateString);

Судя по конвертерам в инете это время в часовом поясе -5:00. Мне его нужно перевести во временной пояс устройства. Как это сделать?

Добавлено через 6 часов 7 минут Решено. Тему можно закрыть.
FILETIME это 64-х разрядное значение, обозначающее количество интервалов по 100 наносекунд каждый, прошедших с первого января 1601 года. Это грубо говоря цитата с майкрософта.
Класс Data в андроиде формируется в милисекундах начиная с 1 января 1970 года. Поэтому проводим некоторые операции преобразования.Получаем нечто подобное. Для примера оставил пример со сменой часового пояса.
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
long pwdLastSet = Long.parseLong("130358883000000000");
        // это 64-х разрядное значение, обозначающее количество интервалов 
        // по 100 наносекунд каждый, прошедших с первого января 1601 года. ( FILETIME Майкрософт )
    
    long javaTime = pwdLastSet - 0x19db1ded53e8000L;     // Отнимаем 116444736000000000 (369 лет)
    javaTime /= 10000L;      // Переводим в секунды
  
    Date today = new Date(javaTime); // Здесь уже имеем преобразованное время отсчет корого идет 
                                     // в милисекундах с 1 января 1970 года
    SimpleDateFormat sdf2 = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    
    String newDateString = sdf2.format(today); // Здесь имеем дату вида 02/03/2014 12:05:00 
                                               //(формат указан строкой выше)
    Log.i(TAG,"Date changed format :"+newDateString); // Контрольный вывод даты
    TimeZone tz = sdf2.getTimeZone();   // Получаем текущее значение временной зоны 
    
    Log.i(TAG,"rawset="+tz.getRawOffset()); // Получаем  смещение в милисекундах  (rawset=14400000)
 
    Log.i(TAG,"rawset(H)="+ (tz.getRawOffset()/(1000*60*60)));  // Оно же в часах  ( 4 )
    
    tz.setRawOffset(-(tz.getRawOffset())); // Меняем значение на нужное (в данном примере инвертируем смещение )
                                           // Было GMT04:00  стало GMT-04:00 
    sdf2.setTimeZone(tz);   // И устанавливаем его
    Log.i(TAG,"after change rawset="+tz.getRawOffset());    // Проверяем - смещение в милисекундах  
                                                            // (after change rawset=-14400000)
 
    Log.i(TAG,"after change rawset(H)="+ (tz.getRawOffset()/(1000*60*60))); // after change rawset(H)=-4
 
    newDateString = sdf2.format(today); // Проверяем
 
    Log.i(TAG,"after change Date changed format :"+newDateString);
    //  after change Date changed format :02/03/2014 04:05:00
    // Как видим время сместилось на 8 часов
1
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 22:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Время. Перевод согласно часовым поясам (Программирование Android):

Подсчитать отработанное время согласно логу - VBA
Всем доброго дня форумчане, Есть задачка подсчитать отработанное время. данные: 07.11.2012 7:31 Вход 07.11.2012 8:29 Выход ...

перевод целого числа в строку согласно формату - C++ Builder
есть переменная типа int. есть переменная типа AnsiString необходимо сконвертировать int в AnsiString по формату, т.е. число должно...

Перемещение, согласно времени (скорость время расстояние) - C#
Как реализовать движение кружка на форме по нажатию клавиши, по любой траектории, cо скоростью 100 пикселей в секунду.(скорость время...

Перевод букв заданных слов из одного регистра в другой согласно условию - C++
Привет всем помогите решить. Спасибо Задано слово из трех букв. Слово состоит только из латинских букв, маленьких и больших. Вывести...

Вывод имён только тех пользователей, у которых согласно учетной записи истекает время использования пароля - PowerShell
Нужна помощь!!! У меня получилось что выводить всех пользователь, а мне нужно только те пользователи у кого истекают пароли (учетной...

Перевод из UnixTime в обычное время - Delphi
Как можно перевести из unix в обычное время?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 22:48
Привет! Вот еще темы с ответами:

Перевод с Паскаля на Си. Определить время суток - C++
Нужна помощь в переводе с паскаля на С ++ п. 5.18. Правил Запрещено размещать задания и решения в виде картинок и других файлов с их...

Перевод времени - секунды с 1970 в наше время - C++
Добрый день уважаемый программисты. Недавно начал изучать С++ и в качестве упражнения для себя захотел сделать программу (готовые функции...

Как во время cons сделать перевод строки? - Lisp
как во время cons сделать перевод строки? (defun test (x) (if (zerop x) () (cons 0 (test (1- x))))) CL-USER> (test 5) ...

Как в Java с точки зрения эффективности время процессора, памяти и простоты реализовать перевод - Java
Возможно для вас это слишком просто или элементарно, но для моей задачи очень важно знать наилучший по памяти и по времени способ перевода...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru