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

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

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

ВО
...
Рейтинг: 0 / 0
Дата имеет вид: 127925032065607100
    #33742598
Фотография 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 порядков меньше. Может это какие-то доли секунды?
...
Рейтинг: 0 / 0
Дата имеет вид: 127925032065607100
    #33742638
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Дата имеет вид: 127925032065607100
    #33742690
Фотография 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. Вроде похоже на что-то вразумительное:)
...
Рейтинг: 0 / 0
Дата имеет вид: 127925032065607100
    #33742869
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Дата имеет вид: 127925032065607100
    #33742907
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Дата имеет вид: 127925032065607100
    #33742949
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо Денис.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Дата имеет вид: 127925032065607100
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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