Автор Тема: [Время, дата] Время в цифровом формате с миллисекундами  (Прочитано 342 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ЭйчЭйч [?]

  • Сообщений: 119
  • Репутация: -6
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.3.14

Описание: вывод времени в реальном времени в формате 24h (hh:mm:ss.nnn). Часы настраиваемые, но только по часовой стрелке. Вывод в цифровом формате. Сохранение настроек, чтобы каждый раз не настраивать.

Примечания: пишу, пока пришло в голову. Дойдут руки, займусь реализацией, или, возможно, уже есть решения, или кто-то решит реализовать.

Русское сообщество AutoIt


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8075
  • Репутация: 2312
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Как то так:

Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>
#include <Date.au3>

Global $sConfig_File = StringTrimRight(@ScriptFullPath, 3) & 'ini'
Global $iLast_Timer = Int(IniRead($sConfig_File, 'Main', 'Last Timer', 0))
Global $sLast_Time = IniRead($sConfig_File, 'Main', 'Last Time', '')

$sLast_Time = ($sLast_Time ? $sLast_Time : StringFormat('%02d:%02d:%02d', @HOUR, @MIN, @SEC))

$hGUI = GUICreate('Settable Clock', 200, 150)

$iClock_Lbl = GUICtrlCreateLabel(_GetTime(), 20, 20, 100)
GUICtrlSetFont($iClock_Lbl, 12, 800)

GUICtrlCreateLabel('Set new time:', 20, 60)
$iHour_Input = GUICtrlCreateInput('00', 20, 80, 30, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
$iMin_Input = GUICtrlCreateInput('00', 60, 80, 30, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
$iSec_Input = GUICtrlCreateInput('00', 100, 80, 30, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))

GUICtrlSetLimit($iHour_Input, 2, 2)
GUICtrlSetLimit($iMin_Input, 2, 2)
GUICtrlSetLimit($iSec_Input, 2, 2)

$iSetTime_Bttn = GUICtrlCreateButton('Set time', 20, 120, 70, 20)

GUISetState(@SW_SHOW, $hGUI)

$iTimer = _Timer_SetTimer($hGUI, 50, '_UpdateClock')

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            _Timer_KillTimer($hGUI, $iTimer)
           
            IniWrite($sConfig_File, 'Main', 'Last Timer', _Timer_Init())
            IniWrite($sConfig_File, 'Main', 'Last Time', StringTrimRight(GUICtrlRead($iClock_Lbl), 4))
           
            Exit
        Case $iSetTime_Bttn
            $sNewTime = StringFormat('%02d:%02d:%02d', GUICtrlRead($iHour_Input), GUICtrlRead($iMin_Input), GUICtrlRead($iSec_Input))
           
            If Not StringRegExp($sNewTime, '^([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$') Then
                MsgBox(48, @ScriptName, 'Wrong time format.')
                ContinueLoop
            EndIf
           
            $iLast_Timer = _Timer_Init()
            $sLast_Time = $sNewTime
           
            GUICtrlSetData($iClock_Lbl, $iLast_Timer)
    EndSwitch
WEnd

Func _GetTime()
    If $iLast_Timer Then
        Return StringTrimLeft(_DateAdd('s', Int(_Timer_Diff($iLast_Timer) / 1000), '1999/01/01 ' & $sLast_Time), 11) & '.' & @MSEC
    EndIf
   
    Return StringFormat('%02d:%02d:%02d.%03d', @HOUR, @MIN, @SEC, @MSEC)
EndFunc

Func _UpdateClock($hWnd, $Msg, $iIDTimer, $dwTime)
    GUICtrlSetData($iClock_Lbl, _GetTime())
EndFunc



Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8075
  • Репутация: 2312
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
ЭйчЭйч  [?]
Цитировать
Часы настраиваемые, но только по часовой стрелке
Тогда так:

Код: AutoIt [Выделить]
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>
#include <Date.au3>

Global $sConfig_File = StringTrimRight(@ScriptFullPath, 3) & 'ini'
Global $iLast_Timer = Int(IniRead($sConfig_File, 'Main', 'Last Timer', 0))
Global $sLast_Time = IniRead($sConfig_File, 'Main', 'Last Time', '')

$sLast_Time = ($sLast_Time ? $sLast_Time : StringFormat('%02d:%02d:%02d', @HOUR, @MIN, @SEC))

$hGUI = GUICreate('Settable Clock', 200, 150)

$iClock_Lbl = GUICtrlCreateLabel(_GetTime(), 20, 20, 100)
GUICtrlSetFont($iClock_Lbl, 12, 800)

GUICtrlCreateLabel('Set new hour:', 20, 60)
$iHour_Input = GUICtrlCreateInput('00', 20, 80, 30, 20, BitOR($GUI_SS_DEFAULT_INPUT, $ES_NUMBER))
GUICtrlSetLimit($iHour_Input, 2)

$iSetTime_Bttn = GUICtrlCreateButton('Set time', 20, 120, 70, 20)

GUISetState(@SW_SHOW, $hGUI)

$iTimer = _Timer_SetTimer($hGUI, 50, '_UpdateClock')

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            _Timer_KillTimer($hGUI, $iTimer)
           
            IniWrite($sConfig_File, 'Main', 'Last Timer', _Timer_Init())
            IniWrite($sConfig_File, 'Main', 'Last Time', StringTrimRight(GUICtrlRead($iClock_Lbl), 4))
           
            Exit
        Case $iSetTime_Bttn
            $sNewTime = StringFormat('%02d:%s', GUICtrlRead($iHour_Input), StringMid(GUICtrlRead($iClock_Lbl), 4, 5))
            ConsoleWrite(StringMid(GUICtrlRead($iClock_Lbl), 4, 5) & @CRLF)
            If Not StringRegExp($sNewTime, '^([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$') Then
                MsgBox(48, @ScriptName, 'Wrong time format.')
                ContinueLoop
            EndIf
           
            $iLast_Timer = _Timer_Init()
            $sLast_Time = $sNewTime
           
            GUICtrlSetData($iClock_Lbl, $iLast_Timer)
    EndSwitch
WEnd

Func _GetTime()
    If $iLast_Timer Then
        Return StringTrimLeft(_DateAdd('s', Int(_Timer_Diff($iLast_Timer) / 1000), '1999/01/01 ' & $sLast_Time), 11) & '.' & @MSEC
    EndIf
   
    Return StringFormat('%02d:%02d:%02d.%03d', @HOUR, @MIN, @SEC, @MSEC)
EndFunc

Func _UpdateClock($hWnd, $Msg, $iIDTimer, $dwTime)
    GUICtrlSetData($iClock_Lbl, _GetTime())
EndFunc


Русское сообщество AutoIt

Re: [Время, дата] Время в цифровом формате с миллисекундами
« Ответ #2 Отправлен: Март 08, 2019, 01:40:52 »

Оффлайн ЭйчЭйч [?]

  • Сообщений: 119

  • Автор темы
  • Репутация: -6
    • Награды
  • Версия AutoIt: 3.3.14.0
Добавил:
- возврат ко времени, установленного на системе
- заменил input на выпадающий список
- - хотел сделать, чтобы по-прежнему в нем была возможность ввести число, но не получилось ограничить ввод
- добавил таймер

(нажмите для показа/скрытия)



Добавлено: Март 08, 2019, 16:50:13
« Последнее редактирование: Март 08, 2019, 22:12:57 от ЭйчЭйч »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8075
  • Репутация: 2312
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
ЭйчЭйч  [?]
Цитировать
добавил таймер
Что то не пойму как оно работает(?).

Русское сообщество AutoIt

Re: [Время, дата] Время в цифровом формате с миллисекундами
« Ответ #4 Отправлен: Март 09, 2019, 04:17:50 »

Оффлайн ЭйчЭйч [?]

  • Сообщений: 119

  • Автор темы
  • Репутация: -6
    • Награды
  • Версия AutoIt: 3.3.14.0
ЭйчЭйч  [?]
Цитировать
добавил таймер
Что то не пойму как оно работает(?).
Секундомер. Считает время от ноля, больше пока ничего.

Русское сообщество AutoIt

Re: [Время, дата] Время в цифровом формате с миллисекундами
« Ответ #5 Отправлен: Март 09, 2019, 11:06:21 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
3754 Просмотров
Последний ответ Февраль 07, 2012, 14:29:11
от joiner
3 Ответов
5739 Просмотров
Последний ответ Сентябрь 26, 2012, 17:41:07
от madmasles
4 Ответов
2684 Просмотров
Последний ответ Январь 12, 2013, 14:59:59
от Medic84
4 Ответов
2943 Просмотров
Последний ответ Март 10, 2013, 01:33:20
от erlik
3 Ответов
2103 Просмотров
Последний ответ Апрель 29, 2013, 00:39:13
от Astel064
2 Ответов
2268 Просмотров
Последний ответ Октябрь 01, 2014, 07:19:33
от Tuner
2 Ответов
1590 Просмотров
Последний ответ Февраль 06, 2015, 14:27:18
от kristow13
6 Ответов
2577 Просмотров
Последний ответ Ноябрь 15, 2015, 17:46:47
от dexter987
1 Ответов
258 Просмотров
Последний ответ Август 01, 2018, 09:20:29
от hedji
12 Ответов
558 Просмотров
Последний ответ Март 09, 2019, 22:53:07
от zelich