所以我在Java中得到了这个即时日期:“2018-05-19T22:00:00Z”。
我怎样才能获得一周中的哪一天?像星期一..
我正在尝试这个,但它不起作用:
${date?string["EEEE"]}
由于
答案 0 :(得分:1)
此时FreeMarker不支持Java 8时间,请参阅contribute页面:
我应该贡献什么?
通常,贡献者会来,因为他们想要修复/改进某件事。但是,如果你只是想提供一般的帮助,这里有一些话题......
- 支持Java 8日期/时间API-s(这实际上肯定是一个困难的)。请注意,有一个第三方解决方案,https://github.com/amedia/freemarker-java-8,但它不像原生解决方案那样无缝。
- ...
所以你可以查看第三方解决方案。
另见:
答案 1 :(得分:1)
Freemarker不能与Instant一起使用,因此您需要将其转换为Java中的字符串(类似“ 2018-05-19T22:00:00Z”),然后按照以下步骤转换字符串:
<#setting locale="en_US">
${"2018-05-19T22:00:00Z"?datetime.iso?string["EEEE"]}
首先将字符串转换为iso格式的日期时间,然后再次以您选择的模式返回字符串。
通过更改语言环境设置,您可能会获得星期几的不同语言版本。
我认为,在Freemarker中工作的最佳方法是始终使用字符串或整数变量。
答案 2 :(得分:0)
${date?string["EEEE"]}
是date
对象, java.util.Date
就可以正常工作。
您可以这样测试:
<#assign date = .now>
${date?string["EEEE"]}
我想它不起作用,因为你的date
是String
,在这种情况下你应该用Java(服务器端)解析它并公开一个java.util.Date
变量模板。
答案 3 :(得分:0)
我建议您使用Java 8中定义的新日期时间API。使用日期时间API,您可以轻松获取与日期和时间相关的所有数据。
Java 8定义了一个单独的Enum来处理名为-DayOfWeek(java.time.DayOfWeek)的一周中的几天
java.time.DayOfWeek是一个枚举,它定义了7个常量,代表一周中的七天 - 星期一(int值= 1),星期二(2),星期三(3)......直到星期日(7)。
import java.time.*;
public class Java8Tester {
public static void main(String args[]) {
Java8Tester java8tester = new Java8Tester();
java8tester.testLocalDateTime();
}
public void testLocalDateTime() {
// Get the current date and time
LocalDateTime currentTime = LocalDateTime.parse("2018-05-19T22:00:00");
System.out.println("Current DateTime: " + currentTime);
DayOfWeek dayOfWeek = currentTime.getDayOfWeek();
System.out.println(currentTime + " was a " + dayOfWeek);
}
}