UP | HOME

free42 Date Tools

Author: Mitch Richling
Updated: 2024-11-21 16:49:09

Copyright 2024 Mitch Richling. All rights reserved.

Table of Contents

1. Metadata

The home for this HTML file is: https://richmit.github.io/hp42/date.html

Files related to this document may be found on github: https://github.com/richmit/hp42

Directory contents:

src - The org-mode file that generated this HTML document
src_42s - Ready to convert source listings for 42s code in this document
docs - This html document and associated PDF
bin - Importable RAW program files

2. Introduction

Aside from the date/time conversion routines, the rest is just wrappers for built in functions to make them print results when called from a program. Why? I wanted to put things like DATE in a nested custom menu, and have them print the date just as if I had directly put the function in a custom menu. ;) Now that free42 has put these into a separate catalog menu, these are somewhat obsolete.

3. Functionality

Menu Prog Description
DATE LBL 95 Current date*
TIME LBL 88 Current time*
UTIME   Return current UNIX date/time integer to stack
▒▒▒▒    
DT→U   Convert a date (Y) & time (X) pair to a UNIX date/time integer
U→DT   Convert a UNIX date/time integer into date (Y) & time (X) pair
DATE LBL 95 Current date*
▒▒▒▒    
JDATE   Return current Julian day number to stack
▒▒▒▒    
D→J   Convert a date to a Julian day number
J→D   Convert a Julian day number to date*
DATE+ LBL 92 Just like built in function*
DDAYS   Just like built in funciton
DOW LBL 91 Just like built in funciton*
▒▒▒▒    
▒▒▒▒    
▒▒▒▒    

Notes: * Result is both printed and pushed to the stack

3.2. Menu Code

The menu code is generated by the following bit of elisp. You must first define the MJR-generate-42-menu-code and MJR-custom-x-gen by evaluating the code blocks in the hp42s-meta.org file.

(MJR-generate-42-menu-code "DMENU" 0 tbl 0 1 'stay 'up 'auto #'MJR-custom-gen-lab #'MJR-custom-gen-sub)

4. App Code

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@ DSC: Interactive Current Date
@@@@ NAM: IDATE
@@@@ OUT: X: Date encoded as a real
@@@@ SFX: Prints date even when called from a program
@@@@ UPD: 2021-03-16
LBL 95
FUNC 01              @@## REQ:free42>=2.5.24
L4STK                @@## REQ:free42>=3.0
DATE                 @@## REQ:free42>=1.4.66
"Date: "
ADATE                @@## REQ:free42>=1.4.66
AVIEW
RTN

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@ DSC: Interactive Current Time
@@@@ NAM: ITIME
@@@@ OUT: X: Time in H.MM.SS format
@@@@ SFX: Prints time even when called from a program
@@@@ UPD: 2021-03-16
LBL 88
FUNC 01              @@## REQ:free42>=2.5.24
L4STK                @@## REQ:free42>=3.0
TIME                 @@## REQ:free42>=1.4.66
"Time: "
ATIME                @@## REQ:free42>=1.4.66
AVIEW
RTN

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@ DSC: Current UNIX time
@@@@ OUT: X: UNIX time
@@@@ UPD: 2021-03-16
LBL "UTIME"
FUNC 02              @@## REQ:free42>=2.5.24
L4STK                @@## REQ:free42>=3.0
DATE                 @@## REQ:free42>=1.4.66
TIME                 @@## REQ:free42>=1.4.66
XEQ "DT→U"
RTN

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@ DSC: Convert date & time to UNIX time
@@@@ IN:  Y: Date
@@@@ IN:  X: Time
@@@@ OUT: X: UNIX time
@@@@ UPD: 2021-03-16
LBL "DT→U"
FUNC 21              @@## REQ:free42>=2.5.24
L4STK                @@## REQ:free42>=3.0
FS? 67               @@@@ In Y.MD mode
1970.0101
FC? 67               @@@@ Not in Y.MD mode
1.011970             @@@@ Works for M.DY & D.MY
RCL ST Z
DDAYS                @@## REQ:free42>=1.4.66
24
×
X<>Y
→HR
+
3600
×
RTN

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@ DSC: Interactive U→DT (prints date & time)
@@@@ IN:  X: UNIX time
@@@@ OUT: Y: Date
@@@@ OUT: X: Time
@@@@ SFX: Prints date & time even when called from a program
@@@@ UPD: 2021-03-16
LBL "U→DT"
FUNC 12              @@## REQ:free42>=2.5.24
L4STK                @@## REQ:free42>=3.0
3600
÷
RCL ST X
24
÷
IP
FS? 67               @@@@ In Y.MD mode
1970.0101
FC? 67               @@@@ Not in Y.MD mode
1.011970             @@@@ Works for M.DY & D.MY
X<>Y
DATE+                @@## REQ:free42>=1.4.66
X<>Y
24
MOD                  @@## REQ:free42>=1.4.66
→HMS
X<>Y
"Date:  "
ADATE                @@## REQ:free42>=1.4.66
X<>Y
"[LF]Time: "
ATIME                @@## REQ:free42>=1.4.66
AVIEW
RTN

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@ DSC: Interactive DATE+ (prints date)
@@@@ NAM: IDATE+
@@@@ IN:  Y: Date
@@@@ IN:  X: Integer
@@@@ OUT: X: Date + Integer
@@@@ UPD: 2021-03-16
LBL 92
FUNC 21              @@## REQ:free42>=2.5.24
L4STK                @@## REQ:free42>=3.0
DATE+                @@## REQ:free42>=1.4.66
"Date: "
ADATE                @@## REQ:free42>=1.4.66
AVIEW
RTN

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@ DSC: Interactive DOW (prints day)
@@@@ NAM: IDOW
@@@@ IN:  X: Date
@@@@ OUT: X: Integer
@@@@ SFX: Prints day of week even when called from a program
@@@@ UPD: 2021-03-16
LBL 91
FUNC 11              @@## REQ:free42>=2.5.24
L4STK                @@## REQ:free42>=3.0
DOW                  @@## REQ:free42>=1.4.66
"Day of Week: "
70
+
XEQ IND ST X
AVIEW
RTN
LBL 70
"SUN"
RTN
LBL 71
"MON"
RTN
LBL 72
"TUE"
RTN
LBL 73
"WED"
RTN
LBL 74
"THR"
RTN
LBL 75
"FRI"
RTN
LBL 76
"SAT"
RTN

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@ DSC: Today's Julian day
@@@@ OUT: X: Julian day for today
@@@@ UPD: 2021-03-16
LBL "JDATE"
FUNC 01              @@## REQ:free42>=2.5.24
L4STK                @@## REQ:free42>=3.0
DATE                 @@## REQ:free42>=1.4.66
XEQ "D→J"
RTN

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@ DSC: Interactive J→D (prints date)
@@@@ NAM: J→D
@@@@ IN:  X: Date
@@@@ OUT: X: Julian day
@@@@ UPD: 2021-03-16
LBL "J→D"
FUNC 11              @@## REQ:free42>=2.5.24
L4STK                @@## REQ:free42>=3.0
2440587.5
-
FS? 67               @@@@ In Y.MD mode
1970.0101
FC? 67               @@@@ Not in Y.MD mode
1.011970             @@@@ Works for M.DY & D.MY
X<>Y
DATE+                @@## REQ:free42>=1.4.66
"Date: "
ADATE                @@## REQ:free42>=1.4.66
AVIEW
RTN

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@ DSC: Today's Julian day
@@@@ NAM: D→J
@@@@ OUT: X: Julian day for today
@@@@ UPD: 2021-03-16
LBL "D→J"
FUNC 11              @@## REQ:free42>=2.5.24
L4STK                @@## REQ:free42>=3.0
FS? 67               @@@@ In Y.MD mode
1970.0101
FC? 67               @@@@ Not in Y.MD mode
1.011970             @@@@ Works for M.DY & D.MY
X<>Y
DDAYS                @@## REQ:free42>=1.4.66
2440587.5
+
RTN

END

5. EOF