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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android демон http://www.cyberforum.ru/android-dev/thread1086199.html
Как после установки приложения(сервиса) сделать так, чтобы сервис заработал, без входа в основное активити... может кто реализовывал??? можа чо с этим колдовать SharedPreferences... ваще такто мне...
Программирование Android id ListView как дать каждому item уникальный id d listview и использовать его для проверки базы данных помогите заранее спасибо http://www.cyberforum.ru/android-dev/thread1086088.html
графический фильтр Программирование Android
Есть фоновая картинка fon.png Картинка ящика , который рисуется поверх фона. photo_box.png Думаю сделать графический фильтр на ящик. Создал такого же размера как и ящик картинку, цвет красный,...
Цикл по ListView Программирование Android
Доброго дня. Есть ListView: final ListView viewActionsList = (ListView) findViewById(R.id.actions); final String values = new String {"Мировые новости", "Новости Ватикана", "Новости...
Программирование Android Drawer от гугл + fragment http://www.cyberforum.ru/android-dev/thread1085947.html
Всем привет! Делаю программу с Drawer. Все сделал как написано в доках http://developer.android.com/intl/ru/training/implementing-navigation/nav-drawer.html ПРосмотрел пример прриложения от туда...
Программирование Android Реализация отправки данных из EditText приложения Android в поле таблицы БД под СУБД Oracle 11g и в поле БД под СУБД MSSQL всем доброго времени суток! Читаю и изучаю мануалы и уроки по разработке ПО под Андройд. вообщем постоянно крутиться мысль в голове, так как имею дело постоянно с различными БД и в основном... подробнее

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

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

31.01.2014, 22:48. Просмотров 733. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru