Zireael |
Отправлено: 20 Сентября, 2018 - 14:38:09
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
https://drive.google.com/open?id...yFCTkBuCis5rshXN
Скачать dll и закинуть в папку с kibor.exe.
Доступные функции:
TimeStamp - возвращает количество секунд прошедших с 1 января 1970 до текущего времени.
TimeZone - возвращает часовой пояс.
Mktime - возвращает количество секунд прошедших с 1 января 1970 до указаной даты.
TimeAdd - прибавляет/отнимает время. Возвращает результат в массив int в следующем порядке:
Час, Минуты, Секунды, День, Месяц, Год, День недели, Прошло дней с 1 января, Переход на летнее время 0/1.
Strftime - возвращает в массив char отформатированную строку в соответствии с задаными параметрами (https://msdn.microsoft.com/en-us...ry/fe06s4ak.aspx).
Синтаксис:
TimeStamp()
TimeZone()
Mktime(<час>, <минуты>, <секунды>, <день>, <месяц>, <год> )
TimeAdd(<адрес массива int, принимающего результат>, <размер массива>, <время в секундах с 01.01.1970>, <час>, <минуты>, <секунды>, <день>, <месяц>, <год> )
Strftime(<адрес массива char, принимающего результат>, <размер массива>, <строка форматирования>, <час>, <минуты>, <секунды>, <день>, <месяц>, <год> )
Количество секунд прошедших с 01.01.1970 (Отобразить)CODE:external(INT, "TimeStamp", "TimeStamp", pathfolder()+"Time.dll" );
int x=TimeStamp();
messagebox("Прошло секунд с 01.01.1970: "+format(x));
Часовой пояс (Отобразить)CODE:external(INT, "TimeZone", "TimeZone", pathfolder()+"Time.dll" );
int x=TimeZone();
messagebox("Часовой пояс: "+format(x));
Количество секунд прошедших с 01.01.1970 до указанного времени (Отобразить)CODE:external(INT, "Mktime", "Mktime", pathfolder()+"Time.dll" );
int x=Mktime(12, 35, 14, 20, 2, 2016); // 12:35:14 20.02.2016
messagebox("Прошло секунд с 01.01.1970: "+format(x));
Прибавить 3 часа 20 минут к текущему времени (Отобразить)CODE:external(INT, "TimeStamp", "TimeStamp", pathfolder()+"Time.dll" );
external(INT, "TimeAdd", "TimeAdd", pathfolder()+"Time.dll" );
int a[3];
TimeAdd(address(#a[0]), sizearray(a), TimeStamp(), 3,20,0,0,0,0); // 3 часа, 20 минут, 0 секунд, 0 дней, 0 месяцев, 0 лет
messagebox(format(a[0])+":"+format(a[1])+":"+format(a[2]));
Отнять от текущего времени 1 день 4 часа 30 минут (Отобразить)CODE:external(INT, "TimeStamp", "TimeStamp", pathfolder()+"Time.dll" );
external(INT, "TimeAdd", "TimeAdd", pathfolder()+"Time.dll" );
int a[6];
TimeAdd(address(#a[0]), sizearray(a), TimeStamp(), -4,-30,0,-1,0,0);
messagebox(format(a[0])+":"+format(a[1])+":"+format(a[2])+formatic(13)+formatic(10)+
format(a[3])+"."+format(a[4])+"."+format(a[5]));
Прибавить 5 дней к текущей дате (Отобразить)CODE:external(INT, "TimeStamp", "TimeStamp", pathfolder()+"Time.dll" );
external(INT, "TimeAdd", "TimeAdd", pathfolder()+"Time.dll" );
int a[6];
TimeAdd(address(#a[0]), sizearray(a), TimeStamp(), 0,0,0,5,0,0);
messagebox(format(a[0])+":"+format(a[1])+":"+format(a[2])+formatic(13)+formatic(10)+
format(a[3])+"."+format(a[4])+"."+format(a[5]));
Получить дату/время в виде строки в заданном формате (Отобразить)CODE:external(INT, "Strftime", "Strftime", pathfolder()+"Time.dll" );
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
char b[100];
Strftime(address(#b[0]), sizearray(b), "%X%n%d.%m.%Y", Hour, Minute, Second, Day, Month, Year);
messagebox(format(#b[0]));
Strftime(address(#b[0]), sizearray(b), "День недели: %u", Hour, Minute, Second, Day, Month, Year);
messagebox(format(#b[0]));
Strftime(address(#b[0]), sizearray(b), "День в году: %j", Hour, Minute, Second, Day, Month, Year);
messagebox(format(#b[0]));
Strftime(address(#b[0]), sizearray(b), "Год: %Y%nГод, последние две цифры: %y", Hour, Minute, Second, Day, Month, Year);
messagebox(format(#b[0])); |
|
|
Zireael |
Отправлено: 15 Декабря, 2018 - 12:08:06
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Прибавить дни к указанной дате (Отобразить)CODE:external(INT, "Mktime", "Mktime", pathfolder()+"Time.dll" );
external(INT, "TimeAdd", "TimeAdd", pathfolder()+"Time.dll" );
// 12:35:14 20 декабря 2018
int time=Mktime(12, 35, 14, 20, 12, 2018); // 12:35:14 20.12.2018
int a[7];
// прибавить 15 дней
TimeAdd(address(#a[0]), sizearray(a), time, 0,0,0,15,0,0);
messagebox(format(a[0])+":"+format(a[1])+":"+format(a[2])+formatic(13)+formatic(10)+
format(a[3])+"."+format(a[4])+"."+format(a[5])+formatic(13)+formatic(10)+
"День недели: "+format(a[6]));
// день недели: 0 - воскресенье, 1 - понедельник и т.д. |
|
|
Zireael |
Отправлено: 06 Января, 2019 - 19:12:37
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: А можно вывести просто, текущее время через эту DLL ? Без даты?
Для этого не нужна длл.
CODE:int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
messagebox(f(Hour)+":"+f(Minute)+":"+f(Second));
function f(int x)
{
if(x<10)return "0"+format(x); // если 'x' меньше 10, то допишет 0 вначале
return format(x);
} |
|
|
007wan |
Отправлено: 05 Мая, 2019 - 13:05:07
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Это правильно? Что для одной переменной используется 2: время и дата. или стоит сделать: Цитата: int Year1, Month1, DayOfWeek1, Day1, Hour1,Minute1, Second1, Milliseconds1; CODE:char Time[100];
char Date[100];
int Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds;
getlocaltime(Year, Month, DayOfWeek, Day, Hour, Minute, Second, Milliseconds);
Strftime(address(#Time[0]), sizearray(Time), "%X", Hour, Minute, Second, Day, Month, Year);
Strftime(address(#Date[0]), sizearray(Date), "%d.%m.%Y", Hour, Minute, Second, Day, Month, Year);
|
|
|
Dantes3000 |
Отправлено: 29 Июня, 2019 - 00:22:58
|
Эксперт
Покинул форум
Сообщений всего: 1489
Дата рег-ции: Июнь 2016
Репутация: 58
|
Перевести миллисекунды в формат 0d 00:00:00 (Отобразить)
CODE:messagebox(toNormalTime(98784000)); //27 hr. 26 min. 24 sec.
function toNormalTime(int dMillisec)
{
double dSec = dMillisec / 1000;
int iHour=dSec/3600,
iMin=dSec/60-iHour*60,
iSec=dSec-iHour*3600-iMin*60,
iDay=iHour/24;
string hour=format(iHour),
min=format(iMin),
sec=format(iSec),
day=format(iDay);
if(size(hour)<2) hour="0"+hour;
if(size(min)<2) min="0"+min;
if(size(sec)<2) sec="0"+sec;
return day+"d "+hour+":"+min+":"+sec;
}
Перевести миллисекунды в формат 00:00:00 (Отобразить)CODE:messagebox(toNormalTime(98784000)); //27 hr. 26 min. 24 sec.
function toNormalTime(int dMillisec)
{
double dSec = dMillisec / 1000;
int iHour=dSec/3600,
iMin=dSec/60-iHour*60,
iSec=dSec-iHour*3600-iMin*60;
string hour=format(iHour),
min=format(iMin),
sec=format(iSec);
if(size(hour)<2) hour="0"+hour;
if(size(min)<2) min="0"+min;
if(size(sec)<2) sec="0"+sec;
return hour+":"+min+":"+sec;
}
(Добавление)
Бывают иногда то ли неправильные значения, то ли баг format или textout...появляются ЭЭЭЭ в строке.
Спойлер (Отобразить)CODE:for(int k=0; k<10000; k++)
{
textout(0,0,0, toNormalTime(k*1000), 0);
}
function toNormalTime(int dMillisec)
{
double dSec = dMillisec / 1000;
int iHour=dSec/3600,
iMin=dSec/60-iHour*60,
iSec=dSec-iHour*3600-iMin*60,
iDay=iHour/24;
string hour=format(iHour),
min=format(iMin),
sec=format(iSec),
day=format(iDay);
if(size(hour)<2) hour="0"+hour;
if(size(min)<2) min="0"+min;
if(size(sec)<2) sec="0"+sec;
return day+"d "+hour+":"+min+":"+sec;
}
(Добавление)
Пытался поставить проверку если <0 на каждое значение - почти сразу синий экран вылетел на ноуте |
|
|
Zireael |
Отправлено: 29 Июня, 2019 - 01:57:35
|
Эксперт
Покинул форум
Сообщений всего: 4461
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Перевести миллисекунды в формат 00:00:00
CODE:external(INT, "wsprintf", "wsprintfA", "User32.dll" );
messagebox(toNormalTime(98784000)); //27 hr. 26 min. 24 sec.
function toNormalTime(int dMillisec)
{
char c[1024];
double dSec = dMillisec / 1000;
int iHour=dSec/3600,
iMin=dSec/60-iHour*60,
iSec=dSec-iHour*3600-iMin*60;
wsprintf(address(#c[0]), "%02d:%02d:%02d", iHour, iMin, iSec);
return format(#c[0]);
} |
|
|
|