shithub: mc

Download patch

ref: dae26bc67285c9bdc8f6093ada35d7e7ca808796
parent: 7dc5e79e0e08453f3e57bb67010fa524d265225a
author: S. Gilles <[email protected]>
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)
 	;;