Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
ящюр
97 / 97 / 60
Регистрация: 15.03.2013
Сообщений: 525
Записей в блоге: 1
#1

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

31.01.2014, 22:48. Просмотров 774. Ответов 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
Ответы с готовыми решениями:

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

Перевод целого числа в строку согласно формату
есть переменная типа int. есть переменная типа AnsiString необходимо сконвертировать int в...

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

RTC на mega8 с часовым кварцем
прошелся по форуму поиском, прямого ответа не нашел до этого искал гуглом - выяснил две вещи: -...

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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.01.2014, 22:48

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

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

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


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

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

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