Code: Select all
;==============================================================
; PrettyDate() & PrettyTime() date/time formatting functions
;
; by TI-994A - free to use, improve, share...
;
; 11th April 2018
;==============================================================
Procedure.s prettyDate(inDate = 0, short = 0)
If inDate = 0
inDate = Date()
EndIf
day = Day(inDate)
weekDay = DayOfWeek(inDate)
month = Month(inDate)
year = Year(inDate)
If short
ordinal$ = ""
Else
Select Val(Right(Str(day), 1))
Case 1
ordinal$ = "st"
Case 2
ordinal$ = "nd"
Case 3
ordinal$ = "rd"
Case 0, 4 To 9
ordinal$ = "th"
EndSelect
If day > 10 And day < 14
ordinal$ = "th"
EndIf
EndIf
Restore days
For dayName = 0 To weekDay
Read.s day$
Next dayName
If short
day$ = Left(day$, 3)
EndIf
Restore months
For monthName = 1 To month
Read.s month$
Next monthName
If short
month$ = Left(month$, 3)
EndIf
ProcedureReturn day$ + ", " + Str(day) + ordinal$ + " " + month$ + " " + Str(year)
DataSection
days:
Data.s "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
months:
Data.s "January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"
EndDataSection
EndProcedure
Procedure.s prettyTime(inDate = 0, twoDigitHour = 0)
If inDate = 0
inDate = Date()
EndIf
hour = Hour(inDate)
minute = Minute(inDate)
meridiem$ = " am"
If hour > 12
meridiem$ = " pm"
hour - 12
EndIf
If hour = 0
hour = 12
EndIf
hour$ = Str(hour)
minute$ = RSet(Str(minute), 2, "0")
If twoDigitHour
hour$ = RSet(Str(hour), 2, "0")
EndIf
ProcedureReturn hour$ + ":" + minute$ + meridiem$
EndProcedure
Debug "[PRETTY TIME]"
Debug "current time, single-digit hour, default:"
Debug "> " + prettyTime() + #CRLF$
Debug "current time, double-digit hour: "
Debug "> " + prettyTime(0, 1) + #CRLF$
Debug "custom value: "
Debug "> " + prettyTime(Date(2018, 4, 18, 0, 1, 0)) + #CRLF$ + #CRLF$
Debug "[PRETTY DATE]"
Debug "1. current date, long format, default: "
Debug "> " + prettyDate() + #CRLF$
Debug "2. current date, short format: "
Debug "> " + prettyDate(0, 1) + #CRLF$
Debug "3. custom value, ordinal example: "
For i = 1 To 4
Debug "> " + prettyDate(Date(1999, 1, i, 0, 0, 0))
Debug "> " + prettyDate(Date(1999, 1, 20 + i, 0, 0, 0))
Next i
Debug "> " + prettyDate(Date(1999, 1, 31, 0, 0, 0))
PRETTY TIME
current time, single-digit hour, default:
> 8:27 pm
current time, double-digit hour:
> 08:27 pm
custom value:
> 12:01 am
PRETTY DATE
1. current date, long format, default:
> Wednesday, 11th April 2018
2. current date, short format:
> Wed, 11 Apr 2018
3. custom value, ordinal example:
> Friday, 1st January 1999
> Thursday, 21st January 1999
> Saturday, 2nd January 1999
> Friday, 22nd January 1999
> Sunday, 3rd January 1999
> Saturday, 23rd January 1999
> Monday, 4th January 1999
> Sunday, 24th January 1999
> Sunday, 31st January 1999