1

Тема: AHK: Преобразовать дату и время в миллисекунды

Приветствую!
Есть дата и время, как форматировать их в миллисекунды?

date = 22.08.2016 
time = 17:00

2

Re: AHK: Преобразовать дату и время в миллисекунды

В милисекунды можно форматировать только период времени.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Преобразовать дату и время в миллисекунды

Мне нужно это для последующей обработки даты в Java, класс Date который хранит время в миллисекундах начиная с 1 января 1970 года. Вот это период и нужен.

4 (изменено: KusochekDobra, 2017-01-20 17:03:00)

Re: AHK: Преобразовать дату и время в миллисекунды

Привет.
Возможно это сгодится.
Можно записать как:


UnixTime() {
;###############Convert YYYYMMDDHHMISS into Unix timestamp#############

	time_orig=%A_NOW%

	StringLeft, now_year, time_orig, 4
	StringMid, now_month, time_orig, 5, 2
	StringMid, now_day, time_orig, 7, 2
	StringMid, now_hour, time_orig, 9, 2
	StringMid, now_min, time_orig, 11, 2
	StringRight, now_sec, time_orig, 2

	;Get year seconds
	year_sec := 31536000*(now_year - 1970)

	;Determine how many leap days
	leap_days := (now_year - 1972)/4 + 1
	Transform, leap_days, Floor, %leap_days%

	;Determine if date is in a leap year, and if the leap day has been yet
	this_leap := now_year/4
	Transform, this_leap_round, Floor, %this_leap%
	If (this_leap = this_leap_round)
	  {
	  If now_month <= 2
		leap_days--   ;subtracts 1 because this year's leap day hasn't been yet
	  }
	leap_sec := leap_days*86400

	;Determine fully completed months
	If now_month = 01
	  month_sec = 0
	If now_month = 02
	  month_sec = 2678400
	If now_month = 03
	  month_sec = 5097600
	If now_month = 04
	  month_sec = 7776000
	If now_month = 05
	  month_sec = 10368000
	If now_month = 06
	  month_sec = 13046400
	If now_month = 07
	  month_sec = 15638400
	If now_month = 08
	  month_sec = 18316800
	If now_month = 09
	  month_sec = 20995200
	If now_month = 10
	  month_sec = 23587200
	If now_month = 11
	  month_sec = 26265600
	If now_month = 12
	  month_sec = 28857600

	  
	;Determine fully completed days
	day_sec := (now_day - 1)*86400

	;Determine fully completed hours
	hour_sec := now_hour*3600 ;don't subtract 1 because it starts at 0

	;Determine fully completed minutes
	min_sec := now_min*60

	;Calculate total seconds
	date_sec := year_sec + month_sec + day_sec + leap_sec + hour_sec + min_sec + now_sec
	return date_sec
}

Тогда вызов:


totalSec:=UnixTime()

Передаст количество прошедших секунд с 1 января 1970 года. Умножаешь результат на 1000 и получаешь миллисекунды.

5 (изменено: belyankin12, 2017-01-20 17:00:21)

Re: AHK: Преобразовать дату и время в миллисекунды

Не совсем понял. Тебе нужно системное время в миллисекунды отформатировать? Но как ты это представляешь? Например сейчас 12:00, ты запускаешь скрипт, а он выдает тебе 1200000000 миллисекунд, так (нолики в миллисекундах рандомные, потом точно сделаю)? Или тебе нужно отформатировать время относительно какой-то даты. Например: сколько миллисекунд прошло с 20:00 вчерашнего дня?

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

6 (изменено: Malcev, 2017-01-20 17:00:10)

Re: AHK: Преобразовать дату и время в миллисекунды

А в чем сложность-то?

time = 20160822170000
time -= 19700101000000,seconds
msgbox % time*1000

7

Re: AHK: Преобразовать дату и время в миллисекунды

Нули в конце не нужны:

time = 2016082217
time -= 19700101, s
msgbox % time*1000

Или, если с изначальными переменными:

date = 22.08.2016
time = 17:00
RegExMatch(date, "(..)\.(..)\.(....)", match)
RegExMatch(time, "(..):(..)", found)
TimeStamp := match3 . match2 . match1 . found1 . found2
TimeStamp -= 19700101, S
MsgBox, % TimeStamp * 1000
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Преобразовать дату и время в миллисекунды

time -= 19700101, s

0101 в конце не нужны:

date = 22.08.2016
time = 17:00
RegExMatch(date time, "(..)\.(..)\.(....)(..):(..)", match)
TimeStamp := match3 match2 match1 match4 match5
TimeStamp -= 1970, s
MsgBox, % TimeStamp * 1000

9 (изменено: teadrinker, 2017-01-20 19:41:44)

Re: AHK: Преобразовать дату и время в миллисекунды

Да. Но я бы их всё равно писал, всё-таки значащие цифры, так понятнее.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder