Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Дата имеет вид: 127925032065607100 / 17 сообщений из 17, страница 1 из 1
19.05.2006, 17:45
    #33739493
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
Подконектился я наконец-то к контроллеру домена нашему,оттуда вывожу данные в JTable, поле lastLogon=127925032065607100. Как мне это число перевести в людский вид.
Спасибо.
...
Рейтинг: 0 / 0
19.05.2006, 17:52
    #33739517
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
Код: plaintext
System.out.println( new  java.util.Date( Long .parseLong("127925032065607100")));
...
Рейтинг: 0 / 0
19.05.2006, 17:56
    #33739527
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
Стоп, неверно, извиняюсь. Но м.б. идея та же, но надо узнать, каким образом идет отсчет.
...
Рейтинг: 0 / 0
19.05.2006, 18:00
    #33739534
Un
Un
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
System.out.println(new Date(127925032065607100L));
...
Рейтинг: 0 / 0
19.05.2006, 18:00
    #33739536
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
Denis Popov
Код: plaintext
System.out.println( new  java.util.Date( Long .parseLong("127925032065607100")));

вот вывод: Tue Nov 21 03:20:07 EET 4055752
немного не ясно что это: 4055752, и вообще помоему чё-то не то он выдал, я логонился сегодня, а он мне мишет Новэмбэр
...
Рейтинг: 0 / 0
19.05.2006, 18:02
    #33739544
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
UnSystem.out.println(new Date(127925032065607100L));
тоже самое: Tue Nov 21 03:20:07 EET 4055752
...
Рейтинг: 0 / 0
19.05.2006, 18:03
    #33739549
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
вообще это число обозначает количество секунд с 1 января 1601 года, по крайней мере так пишет msdn
...
Рейтинг: 0 / 0
19.05.2006, 18:21
    #33739605
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
есть идеи???
...
Рейтинг: 0 / 0
19.05.2006, 19:11
    #33739708
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
java.util.Calendar
...
Рейтинг: 0 / 0
20.05.2006, 14:11
    #33740302
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
peter6636вообще это число обозначает количество секунд с 1 января 1601 года, по крайней мере так пишет msdn
В Java число, передаваемое в конструктор Date, означает количество миллисекунд с начала эпохи, т.е. по-моему с 1 января 1970 года. Т.е. из твоего числа надо вычесть количество секунд между 1 января 1970-м годом и 1 января 1601-м (если оно действительно означает количество секунд), умножить на 1000 (чтобы получить миллисекунды) и передать в конструктор.
...
Рейтинг: 0 / 0
20.05.2006, 15:04
    #33740333
Кувалдин Роман
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
peter6636вообще это число обозначает количество секунд с 1 января 1601 года, по крайней мере так пишет msdn

Это в виндовсе все через пятую точку. А в яве, как и в никсах, откуда и пошла идея, все вращается вокруг количества миллисекунд с 1 января 1970 года.

ВО
...
Рейтинг: 0 / 0
22.05.2006, 13:45
    #33742598
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
peter6636вообще это число обозначает количество секунд с 1 января 1601 года, по крайней мере так пишет msdn
Что-то не верится, что приведенное число - количество секунд. Если через Oracle:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> col seconds format  99999999999999999999 
SQL> select (to_date('01.01.2006', 'dd.mm.yyyy') - to_date('01.01.1601', 'dd.mm.yyyy')) 
   2             *  24  *  60  *  60  seconds
   3   from dual
   4   union all
   5   select  127925032065607100  from dual;

              SECONDS
---------------------
           12780547200 
    127925032065607100 
Т.е. получается число на 7 порядков меньше. Может это какие-то доли секунды?
...
Рейтинг: 0 / 0
22.05.2006, 13:56
    #33742638
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
Denis Popov peter6636вообще это число обозначает количество секунд с 1 января 1601 года, по крайней мере так пишет msdn
Что-то не верится, что приведенное число - количество секунд. Если через Oracle:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SQL> col seconds format  99999999999999999999 
SQL> select (to_date('01.01.2006', 'dd.mm.yyyy') - to_date('01.01.1601', 'dd.mm.yyyy')) 
   2             *  24  *  60  *  60  seconds
   3   from dual
   4   union all
   5   select  127925032065607100  from dual;

              SECONDS
---------------------
           12780547200 
    127925032065607100 
Т.е. получается число на 7 порядков меньше. Может это какие-то доли секунды?
Извиняюсь, не секунд, а наносекунд, вот где я єто вычитал http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adschema/adschema/a_whenchanged.asp
кусок оттуда:
Non-replicated. The badPasswordTime attribute specifies the last time the user attempted to log on to the account using an incorrect password. This value is stored as a large integer that represents the number of 100-nanosecond intervals since January 1, 1601 (UTC). This attribute is maintained separately on each domain controller in the domain. A value of zero means that the last bad password time is unknown. To get an accurate value for the user's last bad password time in the domain, each domain controller in the domain must be queried and the largest value should be used.
...
Рейтинг: 0 / 0
22.05.2006, 14:17
    #33742690
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
"100-nanosecond" - т.е. не наносекунды, а сотни наносекунд? Тогда надо вычислить их количество с 01 января 1610 по 01 января 1970.
Код: plaintext
1.
2.
3.
4.
select  127925032065607100  -
         (to_date('01.01.1970', 'dd.mm.yyyy') - to_date('01.01.1601', 'dd.mm.yyyy'))
         *  24  *  60  *  60  *  10000000  nseconds100
from dual;
У меня получилось 11480296065607100, но м.б. еще надо поразбираться с UTC.
Это 10 -7 секунд с 01 января 1970, надо взять миллисекунды (т.е. умножить на 10000) и скормить конструктору java.util.Date.
Код: plaintext
1.
2.
 long  dt =  Long .parseLong("11480296065607100") /  10000 ;
SimpleDateFormat format =  new  SimpleDateFormat("dd.MM.yyyy hh:mm:ss");
System.out.println(format.format( new  java.util.Date(dt)));
Тут у меня вышло 19.05.2006 01:06:46. Вроде похоже на что-то вразумительное:)
...
Рейтинг: 0 / 0
22.05.2006, 15:25
    #33742869
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
Denis Popov"100-nanosecond" - т.е. не наносекунды, а сотни наносекунд? Тогда надо вычислить их количество с 01 января 1610 по 01 января 1970.
Код: plaintext
1.
2.
3.
4.
select  127925032065607100  -
         (to_date('01.01.1970', 'dd.mm.yyyy') - to_date('01.01.1601', 'dd.mm.yyyy'))
         *  24  *  60  *  60  *  10000000  nseconds100
from dual;
У меня получилось 11480296065607100, но м.б. еще надо поразбираться с UTC.
Это 10 -7 секунд с 01 января 1970, надо взять миллисекунды (т.е. умножить на 10000) и скормить конструктору java.util.Date.
Код: plaintext
1.
2.
 long  dt =  Long .parseLong("11480296065607100") /  10000 ;
SimpleDateFormat format =  new  SimpleDateFormat("dd.MM.yyyy hh:mm:ss");
System.out.println(format.format( new  java.util.Date(dt)));
Тут у меня вышло 19.05.2006 01:06:46. Вроде похоже на что-то вразумительное:)
Спасибо огромное за помощь, а можно ли как-то обойтись без запросов, вот только что написал:
Код: plaintext
1.
2.
  long  dt =  Long .parseLong("127927627915280922") /  10000 ;
java.text.SimpleDateFormat format =  new  java.text.SimpleDateFormat("dd.MM.yyyy hh:mm:ss");
System.out.println(format.format( new  java.util.Date(dt)));
и получил следующее:
Код: plaintext
 22 . 05 . 2375   12 : 13 : 11 
все гуд кроме года.
...
Рейтинг: 0 / 0
22.05.2006, 15:37
    #33742907
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
peter6636
Спасибо огромное за помощь, а можно ли как-то обойтись без запросов, вот только что написал:
Код: plaintext
1.
2.
  long  dt =  Long .parseLong("127927627915280922") /  10000 ;
java.text.SimpleDateFormat format =  new  java.text.SimpleDateFormat("dd.MM.yyyy hh:mm:ss");
System.out.println(format.format( new  java.util.Date(dt)));
и получил следующее:
Код: plaintext
 22 . 05 . 2375   12 : 13 : 11 
все гуд кроме года.
Ты неверно написал, имхо опять оперируешь временем с 01.01.1610.

Повторюсь: надо еще разобраться с UTC, но общее правило для превращения твоих чисел в дату примерно таково: вычитаешь из него количество сотен наносекунд между 01.01.1970 и 01.01.1610 (у меня оно получилось равным 116444736000000000) и делишь на 10 4
Код: plaintext
1.
2.
3.
4.
5.
6.
 static   final   long  NSECONDS100_OFFSET = 116444736000000000L;
...
Date date =  new  Date((127927627915280922L - NSECONDS100_OFFSET) /  10000 );
SimpleDateFormat dateFormat =  new  SimpleDateFormat("dd.MM.yyyy hh:mm:ss");
dateFormat.setLenient(false);
System.out.println(dateFormat.format(date));
У меня получилось 22.05.2006 01:13:11
...
Рейтинг: 0 / 0
22.05.2006, 15:50
    #33742949
peter6636
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дата имеет вид: 127925032065607100
Огромное спасибо Денис.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Дата имеет вид: 127925032065607100 / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]