if isLeap || year > 9999 {
fmt.Printf("TAI64 %d %d %d", t.Unix(), ns, as)
} else {
- fmt.Printf("TAI64 [UTCFromISO \"%s\"] %d %d",
+ fmt.Printf("TAI64 [ToTAI [ISOToSec \"%s\"]] %d %d",
utc.Format("2006-01-02 15:04:05"), ns, as)
}
}
}
}
-proc UTCFromISO {v} {
+# v is a "2006-01-02 15:04:05"-formatted string that is converted to seconds.
+proc ISOToSec {v} {
return [clock scan $v -format {%Y-%m-%d %H:%M:%S} -gmt 1]
}
}
for {set i 0} {$i < [llength $Leapsecs]} {incr i} {
set v [lindex $Leapsecs $i]
- set v [UTCFromISO "$v-01 00:00:00"]
+ set v [ISOToSec "$v-01 00:00:00"]
set v [expr {$v + 10 + $i}]
lset Leapsecs $i $v
}
-proc toTAI64 {v} {
+proc ToTAI {v} {
variable Leapsecs
set i 0
for {} {$i < [llength $Leapsecs]} {incr i} {
if {$v == [lindex $Leapsecs $i]} {
incr v
}
- set v [expr {$v + (1<<62)}]
- upvar buf buf
- toBE 8 $v
+ return $v
}
proc TAI64 {v {n 0} {a 0}} {
upvar buf buf
+ set v [expr {$v + (1<<62)}]
if {$a != 0} {
char [expr 0x1A]
- toTAI64 $v
+ toBE 8 $v
toBE 4 $n
toBE 4 $a
} elseif {$n != 0} {
char [expr 0x19]
- toTAI64 $v
+ toBE 8 $v
toBE 4 $n
} else {
char [expr 0x18]
- toTAI64 $v
+ toBE 8 $v
}
}
namespace export EOC NIL FALSE TRUE HEXLET MAGIC INT STR BIN RAW
-namespace export TAI64 UTCFromISO
+namespace export TAI64 ToTAI ISOToSec
namespace export LIST MAP SET LenFirstSort BLOB
}
dump 'LIST {TRUE FALSE}' >list-bool
dump 'MAP {}' >map-empty
dump 'MAP {a {LIST {NIL}}}' >map-foo
-dump 'TAI64 [UTCFromISO "1970-01-01 00:00:00"]' >tai-utc0
+dump 'TAI64 [ToTAI [ISOToSec "1970-01-01 00:00:00"]]' >tai-utc0
dump 'TAI64 -11' >tai-before
dump 'RAW [binary decode hex "1840000000586846A4"]' >tai-leap
dump 'TAI64 1234 1234' >tai-ns
{RAW [binary decode hex "180000000000000000"]}
}}
dates {LIST {
- {TAI64 1234567890}
- {TAI64 1234567890 456000}
- {TAI64 1234567890 456789}
- {TAI64 1234567890 456789 123456789}
+ {TAI64 [ToTAI 1234567890]}
+ {TAI64 [ToTAI 1234567890] 456000}
+ {TAI64 [ToTAI 1234567890] 456789}
+ {TAI64 [ToTAI 1234567890] 456789 123456789}
}}
uuid {HEXLET 0e875e3f-d385-49eb-87b4-be42d641c367}
ip {HEXLET 2001:0db8:85a3:08d3:1319:8a2e:0370:7348}