ref: dae26bc67285c9bdc8f6093ada35d7e7ca808796
parent: 7dc5e79e0e08453f3e57bb67010fa524d265225a
author: S. Gilles <sgilles@math.umd.edu>
date: Sun Sep 24 12:08:47 EDT 2017
Left-pad %m and %k output with 0
--- a/lib/date/fmt.myr
+++ b/lib/date/fmt.myr
@@ -62,9 +62,9 @@
| 'H': std.sbfmt(sb, "{p=0,w=2}", d.h)
| 'I': std.sbfmt(sb, "{p=0,w=2}", d.h % 12)
| 'j': std.sbfmt(sb, "year day... unimplemented.")
- | 'k': std.sbfmt(sb, "{}", d.h)
+ | 'k': std.sbfmt(sb, "{p=0,w=2}", d.h)
| 'l': std.sbfmt(sb, "{}", d.h % 12)
- | 'm': std.sbfmt(sb, "{}", d.mon)
+ | 'm': std.sbfmt(sb, "{p=0,w=2}", d.mon)
| 'M': std.sbfmt(sb, "{p=0,w=2}", d.m)
| 'n': std.sbfmt(sb, "\n")
| 'O': std.sbfmt(sb, "unsupported %O")
--- a/lib/date/test/fmt.myr
+++ b/lib/date/test/fmt.myr
@@ -7,13 +7,13 @@
/* epoch */
d = date.mkinstant(0, "")
- eq("1970-1-01 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("1970-01-01 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
d = date.mkinstant(24*3600*1_000_000, "")
- eq("1970-1-02 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("1970-01-02 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
/* epoch + 12 hours */
d = date.mkinstant(12*3600*1_000_000, "")
- eq("1970-1-01 12:00:00 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("1970-01-01 12:00:00 +0000", std.bfmt(buf[:], "{D}", d))
/* epoch - 6 hours */
d = date.mkinstant(-6*3600*1_000_000, "")
@@ -25,11 +25,11 @@
/* more or less random: Fri 29 Aug 2014 07:47:43 PM UTC*/
d = date.mkinstant(1_409_341_663*1_000_000, "")
- eq("2014-8-29 19:47:43 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("2014-08-29 19:47:43 +0000", std.bfmt(buf[:], "{D}", d))
/* large negative time stamp */
d = date.mkinstant(-50000000000*1_000_000, "")
- eq("385-7-25 07:06:40 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("385-07-25 07:06:40 +0000", std.bfmt(buf[:], "{D}", d))
/* date : the bc */
d = date.mkinstant(-70000000000*1_000_000, "")
@@ -38,27 +38,27 @@
/* test addition and subtraction of dates */
d = date.mkinstant(-1, "")
d = date.addperiod(d, `date.Hour 1)
- eq("1970-1-01 00:59:59 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("1970-01-01 00:59:59 +0000", std.bfmt(buf[:], "{D}", d))
d = date.mkinstant(0, "")
d = date.addperiod(d, `date.Hour 24)
- eq("1970-1-02 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("1970-01-02 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
d = date.mkinstant(0, "")
d = date.addperiod(d, `date.Day 1)
- eq("1970-1-02 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("1970-01-02 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
d = date.subperiod(d, `date.Day 1)
- eq("1970-1-01 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("1970-01-01 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
d = date.subperiod(d, `date.Year 1)
- eq("1969-1-01 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("1969-01-01 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
d = date.addperiod(d, `date.Day 365)
- eq("1970-1-01 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("1970-01-01 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
d = date.addperiod(d, `date.Year 2)
- eq("1972-1-01 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
+ eq("1972-01-01 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
d = date.addperiod(d, `date.Day 365)
eq("1972-12-31 00:00:00 +0000", std.bfmt(buf[:], "{D}", d))
@@ -66,7 +66,7 @@
for var i = 0; i < 50; i++
d = date.addperiod(d, `date.Day 1)
d = date.addperiod(d, `date.Second 1)
- s = std.fmt("1970-{}-{p=0,w=2} 12:{p=0,w=2}:{p=0,w=2} +0000", \
+ s = std.fmt("1970-{p=0,w=2}-{p=0,w=2} 12:{p=0,w=2}:{p=0,w=2} +0000", \
(i+1)/31 + 1, (i+1)%31+1, (i+13)/60, (i+13)%60)
eq(s, std.bfmt(buf[:], "{D}", d))
std.slfree(s)
--- a/lib/date/test/parse.myr
+++ b/lib/date/test/parse.myr
@@ -24,7 +24,7 @@
match date.parsefmtz("%Y-%m-%d %H:%M:%S %z", "1969-12-31 16:00:00 -0800", "")
| `std.Ok d:
std.assert(d.actual == 0, "got wrong date")
- eq(std.bfmt(buf[:], "{D}", d), "1970-1-01 00:00:00 +0000")
+ eq(std.bfmt(buf[:], "{D}", d), "1970-01-01 00:00:00 +0000")
| `std.Err m:
std.fatal("failed to parse date: {}\n", m)
;;
@@ -42,7 +42,7 @@
match date.parsefmt("%a, %d %b %Y %H:%M:%S %z", "Thu, 21 Sep 2017 13:55:05 -0400")
| `std.Ok d:
std.assert(d.actual == 1506016505 * 1_000_000, "wrong timestamp")
- eq(std.bfmt(buf[:], "{D}", d), "2017-9-21 13:55:05 -0400")
+ eq(std.bfmt(buf[:], "{D}", d), "2017-09-21 13:55:05 -0400")
| `std.Err m:
std.fatal("Failed to parse date: {}", m)
;;