diff --git a/README.md b/README.md index 574d51d..3f38312 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,8 @@ This project provides a set of template renderers. - Renders the current date and time in ISO 8061 format. - **rife.render.DateTimeRfc2822** - Renders the current date and time in RFC 2822 format. +- **rife.render.DateTimeUtc** + - Renders the current UTC date and time in ISO 8061 format. - **rife.render.EncodeBase64** - Encodes a template value to Base64. - **rife.render.EncodeHtml** diff --git a/lib/src/main/java/rife/render/DateTimeUtc.java b/lib/src/main/java/rife/render/DateTimeUtc.java new file mode 100644 index 0000000..42e0b3d --- /dev/null +++ b/lib/src/main/java/rife/render/DateTimeUtc.java @@ -0,0 +1,47 @@ +/* + * Copyright 2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package rife.render; + +import rife.template.Template; +import rife.template.ValueRenderer; + +import java.time.ZoneId; +import java.time.ZonedDateTime; + +/** + *
Return the current UTC date and time in ISO 8601 format.
+ * + *Usage:
+ * + *+ * <!--v render:rife.render.DateTimeUTC/--> + * {{v render:rife.render.DateTimeUTC}} + *+ * + * @author Erik C. Thauvin + * @since 1.0 + */ +public class DateTimeUtc implements ValueRenderer { + /** + * {@inheritDoc} + */ + @Override + public String render(Template template, String valueId, String differentiator) { + return ZonedDateTime.now().format(DateTimeIso.iso8601Formatter.withZone(ZoneId.of("UTC"))); + } +} diff --git a/lib/src/test/java/rife/render/TestDateTime.java b/lib/src/test/java/rife/render/TestDateTime.java index 6d7e538..7e70cc0 100644 --- a/lib/src/test/java/rife/render/TestDateTime.java +++ b/lib/src/test/java/rife/render/TestDateTime.java @@ -42,6 +42,12 @@ class TestDateTime { assertThatCode(() -> DateTimeRfc2822.rfc2822Formatter.parse(t.getContent())).doesNotThrowAnyException(); } + @Test + void testDateTimeUtc2() { + var t = TemplateFactory.HTML.get("dateTimeUtc"); + assertThatCode(() -> DateTimeIso.iso8601Formatter.parse(t.getContent())).doesNotThrowAnyException(); + } + @Test void testTimeIso() { var t = TemplateFactory.HTML.get("timeIso"); diff --git a/lib/src/test/resources/templates/dateTimeUtc.html b/lib/src/test/resources/templates/dateTimeUtc.html new file mode 100644 index 0000000..450d166 --- /dev/null +++ b/lib/src/test/resources/templates/dateTimeUtc.html @@ -0,0 +1 @@ +{{v render:rife.render.DateTimeUtc/}} \ No newline at end of file