|
Post by ptitjoz on May 15, 2018 8:57:33 GMT 1
Hello How to get the date of the day and put it in a variable? I do not want to use EXEC $ .. Thank you for your advice Regards
PRINT EXEC$("date +""%d/%m/%Y""")
IF DAY(NOW)<10 THEN PRINT "0";DAY(NOW); ELSE PRINT DAY(NOW); END IF PRINT "/"; IF MONTH(NOW)<10 THEN PRINT "0";MONTH(NOW); ELSE PRINT DAY(NOW); END IF PRINT "/"; PRINT YEAR(NOW) x=GETKEY
|
|
|
Post by vovchik on May 15, 2018 13:43:17 GMT 1
Dear ptitjoz,
Here are two functions for date and time:
' ------------------ FUNCTION DATESTAMP$() ' ------------------ LOCAL mytime TYPE unsigned long LOCAL my_time$ TYPE STRING mytime = NOW ' without seconds PRINT YEAR(mytime), MONTH(mytime), DAY(mytime) \ FORMAT "%02lu%02lu%02lu" TO my_time$ RETURN my_time$ END FUNCTION
' ------------------ FUNCTION GET_TIME$() ' ------------------ LOCAL now$ TYPE STRING LOCAL h, m, s TYPE int h = HOUR(NOW) m = MINUTE(NOW) s = SECOND(NOW) PRINT h, m, s FORMAT "%02d:%02d:%02d" TO now$ RETURN now$ END FUNCTION
With kind regards, vovchik
|
|
|
Post by ptitjoz on May 16, 2018 9:43:13 GMT 1
Hello it's really perfect! Thank you very much. With my best regards !
|
|
|
Post by vovchik on May 16, 2018 13:55:05 GMT 1
Dear ptitjoz,
Thanks. I am glad it worked for you. I thought about it a little and decided it might be good to have a kind of universal function that returns date, time or both:
' ------------------ FUNCTION DATETIME$(int mode) ' ------------------ ' mode 0 = date e.g. 20180516 ' mode 1 = time e.g. 19:31:52 ' mode 2 = date & _ & time e.g. 20180516_19:31:52 ' mode 3 = datetime string, with | as separator for 6 fields ' YYYY|MM|DD|HH|MM|SS e.g. 2018|05|16|19|31|52 ' for subsequent processing using TOKEN$ or SPLIT ' modes 4-9 = YYYY, MM, DD, HH, MM, SS LOCAL mytime TYPE unsigned long LOCAL my_date$, my_time$, my_datetime$ TYPE STRING mytime = NOW PRINT YEAR(mytime), MONTH(mytime), DAY(mytime) \ FORMAT "%02lu%02lu%02lu" TO my_date$ PRINT HOUR(mytime), MINUTE(mytime), SECOND(mytime) \ FORMAT "%02lu:%02lu:%02lu" TO my_time$ my_datetime$ = MID$(my_date$, 1, 4) & "|" & \ MID$(my_date$, 5, 2) & "|" & \ MID$(my_date$, 7, 2) & "|" & \ MID$(my_time$, 1, 2) & "|" & \ MID$(my_time$, 4, 2) & "|" & \ MID$(my_time$, 7, 2) SELECT mode CASE 0 RETURN my_date$ CASE 1 RETURN my_time$ CASE 2 RETURN my_date$ & "_" & my_time$ CASE 3 RETURN my_datetime$ CASE 4 RETURN TOKEN$(my_datetime$, 1, "|") CASE 5 RETURN TOKEN$(my_datetime$, 2, "|") CASE 6 RETURN TOKEN$(my_datetime$, 3, "|") CASE 7 RETURN TOKEN$(my_datetime$, 4, "|") CASE 8 RETURN TOKEN$(my_datetime$, 5, "|") CASE 9 RETURN TOKEN$(my_datetime$, 6, "|") DEFAULT RETURN "Error: valid modes are 0 to 9" END SELECT END FUNCTION
PRINT DATETIME$(0) PRINT DATETIME$(1) PRINT DATETIME$(2) PRINT DATETIME$(3) PRINT DATETIME$(4) PRINT DATETIME$(5) PRINT DATETIME$(6) PRINT DATETIME$(7) PRINT DATETIME$(8) PRINT DATETIME$(9) PRINT DATETIME$(-4)
Output:
20180516 20:59:51 20180516_20:59:51 2018|05|16|20|59|51 2018 05 16 20 59 51
Maybe it might be useful to somebody.
With kind regards, vovchik
|
|
|
Post by ptitjoz on May 18, 2018 7:36:43 GMT 1
That's great ! Maybe handle parameter errors?
example :
PRINT DATETIME$ (123)
PRINT DATETIME$ (test)
With my best regards
|
|
|
Post by vovchik on May 18, 2018 10:31:51 GMT 1
Dear ptitjoz,
Thanks for the suggestion. I added a DEFAULT (error) to the code above, so it will generate an error if mode is not in the range of 0-9.
With kind regards, vovchik
|
|