Code: Select all
; AZJIO
; Formatted string for date output
Procedure.s TrimLeft(String$, n)
ProcedureReturn Right(String$, Len(String$) - n)
EndProcedure
Procedure.s _DateTime(FormStr$, DateCurSec = 0)
; дата в массив
Protected Dim DateCur(6), Dim MON.s(12), Dim WDAY.s(6), Dim WDAY2.s(6)
If Not DateCurSec
DateCurSec = Date()
EndIf
DateCur(0) = Year(DateCurSec)
DateCur(1) = Month(DateCurSec)
DateCur(2) = Day(DateCurSec)
DateCur(3) = Hour(DateCurSec)
DateCur(4) = Minute(DateCurSec)
DateCur(5) = Second(DateCurSec)
DateCur(6) = DayOfWeek(DateCurSec)
FormStr$ = ReplaceString(FormStr$, "\n", #CRLF$) ; переносы строк
FormStr$ = ReplaceString(FormStr$, "yyyy", Str(DateCur(0))) ; год 4 символа
FormStr$ = ReplaceString(FormStr$, "yy", TrimLeft(Str(DateCur(0)), 2)) ; год 2 символа
; MON(1) = "Январь"
; MON(2) = "Февраль"
; MON(3) = "Март"
; MON(4) = "Апрель"
; MON(5) = "Май"
; MON(6) = "Июнь"
; MON(7) = "Июль"
; MON(8) = "Август"
; MON(9) = "Сентябрь"
; MON(10) = "Октябрь"
; MON(11) = "Ноябрь"
; MON(12) = "Декабрь"
MON(1) = "January"
MON(2) = "February"
MON(3) = "March"
MON(4) = "April"
MON(5) = "May"
MON(6) = "June"
MON(7) = "July"
MON(8) = "August"
MON(9) = "September"
MON(10) = "October"
MON(11) = "November"
MON(12) = "December"
FormStr$ = ReplaceString(FormStr$, "MMMM", MON(DateCur(1)), #PB_String_CaseSensitive, 1, 1)
FormStr$ = ReplaceString(FormStr$, "mmmm", LCase(MON(DateCur(1))), #PB_String_CaseSensitive, 1, 1)
FormStr$ = ReplaceString(FormStr$, "MMM", Left(MON(DateCur(1)), 3), #PB_String_CaseSensitive, 1, 1)
FormStr$ = ReplaceString(FormStr$, "mmm", LCase(Left(MON(DateCur(1)), 3)), #PB_String_CaseSensitive, 1, 1)
FormStr$ = ReplaceString(FormStr$, "mm", RSet(Str(DateCur(1)), 2, "0"))
FormStr$ = ReplaceString(FormStr$, "dd", RSet(Str(DateCur(2)), 2, "0"))
; WDAY(0) = "Воскресенье"
; WDAY(1) = "Понедельник"
; WDAY(2) = "Вторник"
; WDAY(3) = "Среда"
; WDAY(4) = "Четверг"
; WDAY(5) = "Пятница"
; WDAY(6) = "Суббота"
WDAY(0) = "Sunday"
WDAY(1) = "Monday"
WDAY(2) = "Tuesday"
WDAY(3) = "Wednesday"
WDAY(4) = "Thursday"
WDAY(5) = "Friday"
WDAY(6) = "Saturday"
; WDAY2(0) = "Вс"
; WDAY2(1) = "Пн"
; WDAY2(2) = "Вт"
; WDAY2(3) = "Ср"
; WDAY2(4) = "Чт"
; WDAY2(5) = "Пт"
; WDAY2(6) = "Сб"
WDAY2(0) = "Sun"
WDAY2(1) = "Mon"
WDAY2(2) = "Tue"
WDAY2(3) = "Wed"
WDAY2(4) = "Thur"
WDAY2(5) = "Fri"
WDAY2(6) = "Sat"
; WDAY2(0) = "Su"
; WDAY2(1) = "Mo"
; WDAY2(2) = "Tu"
; WDAY2(3) = "We"
; WDAY2(4) = "Th"
; WDAY2(5) = "Fr"
; WDAY2(6) = "Sa"
FormStr$ = ReplaceString(FormStr$, "WWW", WDAY(DateCur(6)), #PB_String_CaseSensitive, 1, 1)
FormStr$ = ReplaceString(FormStr$, "www", LCase(WDAY(DateCur(6))), #PB_String_CaseSensitive, 1, 1)
FormStr$ = ReplaceString(FormStr$, "WW", WDAY2(DateCur(6)), #PB_String_CaseSensitive, 1, 1)
FormStr$ = ReplaceString(FormStr$, "ww", LCase(WDAY2(DateCur(6))), #PB_String_CaseSensitive, 1, 1)
FormStr$ = ReplaceString(FormStr$, "hh", RSet(Str(DateCur(3)), 2, "0"))
FormStr$ = ReplaceString(FormStr$, "ii", RSet(Str(DateCur(4)), 2, "0"))
FormStr$ = ReplaceString(FormStr$, "ss", RSet(Str(DateCur(5)), 2, "0"))
ProcedureReturn FormStr$
EndProcedure
; FormatDate("%yyyy.%mm.%dd %hh:%ii:%ss", Date())
res$ = ""
res$ +_DateTime("The current date: yyyy.mm.dd hh:ii:ss\n")
res$ +_DateTime("day of the week: WWW\n")
res$ +_DateTime("briefly: MMM.dd hh:ii\n")
res$ +_DateTime("informatively: dd WW hh:ii")
MessageRequester("Message", res$)