Bug 19816: Implement dateonly for rfc3339 format
authorTomas Cohen Arazi <tomascohen@theke.io>
Thu, 24 Jan 2019 17:29:09 +0000 (14:29 -0300)
committerLucas Gass <lucas@bywatersolutions.com>
Tue, 12 Feb 2019 02:41:14 +0000 (02:41 +0000)
This patch implements the dateonly option for the rfc3339. This is
described in the OpenAPI 2.0 specification [1]. The required output
format is described on RFC 3339 [2], as 'full-date'.

[1] https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#dataTypeFormat
[2] https://tools.ietf.org/html/rfc3339#section-5.6

To test:
- Apply the regression tests patch
- Run:
 k$ prove t/DateUtils.t
=> FAIL: Tests fail because dateonly is not implemented
- Apply this patch
- Run:
 k$ prove t/DateUtils.t
=> SUCCESS: Tests pass!
- Sign off :-D

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
(cherry picked from commit b2dce05ddff8a047e7770ea241b1edd9b798212e)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
(cherry picked from commit dcc0478089f5fde72426d94810bed6430df73a34)

Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>

Koha/DateUtils.pm

index 2b8ee8b..459a5a8 100644 (file)
@@ -254,8 +254,13 @@ sub output_pref {
           : $dt->strftime("%Y-%m-%d $time");
     }
     elsif ( $pref =~ m/^rfc3339/ ) {
-        $date = $dt->strftime('%FT%T%z');
-        substr($date, -2, 0, ':'); # timezone "HHmm" => "HH:mm"
+        if (!$dateonly) {
+            $date = $dt->strftime('%FT%T%z');
+            substr($date, -2, 0, ':'); # timezone "HHmm" => "HH:mm"
+        }
+        else {
+            $date = $dt->strftime("%Y-%m-%d");
+        }
     }
     elsif ( $pref =~ m/^metric/ ) {
         $date = $dateonly