JodaTime有一个提供Hibernate持久性的库.最近我开始关注Joda-Money并开始看看如何使用hibernate持久保存,我没有看到任何库.
有什么建议?
我实例化了一个在my中java.util.Date
调用的对象myDate
,controller
并将其传递给我的JSP,我在页面顶部配置了一个Joda Time JSP标记:
<%@taglib prefix="joda" uri="http://www.joda.org/joda/time/tags" %>
Run Code Online (Sandbox Code Playgroud)
当然还有Maven
通过POM文件添加到项目中的必要依赖项.
但是,当我尝试myDate
从JSP 访问时,如下所示:
<joda:format value="${myDate}" style="SM" />
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
javax.servlet.jsp.JspException:
value attribute of format tag must be a
ReadableInstant or ReadablePartial, was: java.util.Date
Run Code Online (Sandbox Code Playgroud)
参考Joda Time JSP标签的文档,我不知道我应该如何"转换"我myDate
的这个ReadableInstant
或ReadablePartial
在这个JSP的上下文中?
鉴于JSR-310对象,例如LocalDate
,我如何找到下周三(或任何其他星期几)的日期?
LocalDate today = LocalDate.now();
LocalDate nextWed = ???
Run Code Online (Sandbox Code Playgroud) 我有Java 8日期/时间字段的简单文档
@Document
public class Token {
private Instant createdAt;
...
}
Run Code Online (Sandbox Code Playgroud)
我希望坚持使用Spring Data MongoDB 1.5版.但是类型的字段java.time.Instant
无法正确反序列化,因为MappingMongoConverter
缺少java.time
类的转换器.
在Spring 4中,我发现org.springframework.format.datetime.standard.DateTimeConverters
了不同的Converter
s包括InstantToLongConverter
并LongToInstantConverter
声明为私有静态类.
如何配置MongoTemplate
使用它们将Instant
字段映射到long?
在Java 8之前,常见的方法是Calendar
API:
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);
Run Code Online (Sandbox Code Playgroud)
如何获取当前小时,但使用Java 8中提供的新Date-Time API?
我在我的应用程序中使用JSR 310 DateTime API*,我需要解析和格式化军事日期时间(称为DTG或"日期时间组").
我正在解析的格式如下(使用DateTimeFormatter
):
"ddHHmm'Z' MMM yy" // (ie. "312359Z DEC 14", for new years eve 2014)
Run Code Online (Sandbox Code Playgroud)
如上所述,这种格式很容易解析.当日期包含与'Z'不同的时区(祖鲁时区,与UTC/GMT相同)时出现问题,例如'A'(Alpha,UTC + 1:00)或'B'(Bravo,UTC + 2:00).有关完整列表,请参阅军事时区.
我该如何解析这些时区?或者换句话说,除了文字"Z"之外,我还可以使用上面的格式来正确解析所有区域?我已经尝试使用"ddHHmmX MMM yy"
,"ddHHmmZ MMM yy"
和"ddHHmmVV MMM yy"
,但他们没有工作(一切都会抛出DateTimeParseException: Text '312359A DEC 14' could not be parsed at index 6
了上面的例子中,在解析时).V
不允许在格式中使用单个(IllegalArgumentException
尝试实例化时DateTimeFormatter
).
编辑:z
如果不是下面的问题,似乎符号可能有效.
我还要提一下,我已经创建了一个ZoneRulesProvider
包含所有命名区域和正确的偏移量.我已经验证使用SPI机制正确注册了这些,并且我的provideZoneIds()
方法按预期调用.仍然不会解析.作为一个副问题(编辑:现在这似乎是主要问题),API不允许使用"Z"以外的单字符时区ID(或"区域").
例如:
ZoneId alpha = ZoneId.of("A"); // boom
Run Code Online (Sandbox Code Playgroud)
将抛出DateTimeException: Invalid zone: A
(甚至没有访问我的规则提供程序,看它是否存在). …
已经提出了向Java语言添加闭包的三个主要建议:
我的问题:
在这个页面上我读了以下内容:
要使用日期进行计算,这也很容易.与目前Java <1.8的情况相比,可能是最好的改进:
Period p = Period.of(2, HOURS);
LocalTime time = LocalTime.now();
LocalTime newTime = time.plus(p); // or time.plus(5, HOURS); or time.plusHours(5);
Run Code Online (Sandbox Code Playgroud)
我没有清楚地看到版本<1.8之前的优势.
也许有人可以举个例子?Atm我问自己,新的日期和时间API的改进来自哪里.
java.time.temporal.Temporal的文档包含以下注释:
实施要求:[...]所有实施必须是可比较的.
为什么Temporal不仅仅扩展可比性?
背景:我想使用类似的时间(不是像LocalDateTime等子类型),并且必须采用一种有点难以辨认的类型<T extends Temporal & Comparable<T>>
,这也会混淆NetBeans的自动完成功能.
编辑:我想实现一个时间间隔.包含(Interval i),包含(Temporal t),重叠(...),adjoins(...)等的明显实现使用Comparable :: compareTo(Comparable c)来比较起点和终点,但是互操作性(toDuration(),parse(CharSequence cs))我需要例如Duration :: between(Temporal s,Temporal e)或SubtypeOfTemporal :: parse(CharSequence cs)(产生Temporal).
有人可以解释一下Instant.getEpochSecond与Instant.toEpochMilli命名背后的理由吗?我能想到的唯一原因是瞬间的内部表示为相对于纪元的秒数和相对于该秒的纳秒时间,而毫秒数是根据这两个值计算的.
但是为什么要让这样的实现细节泄漏到新的API中呢?