我正在练习如何处理日期。但是当我想使用javafx datepicker时,我被卡住了。因为它只适用于java.time.LocalDate,所以我尝试了这样的方法。
// here i import java.time.LocalDate to get the date from the datepicker;
LocalDate dueDate = datepickerInvoiceDueDate.getValue();
int year = dueDate.getYear();
int month = dueDate.getMonthValue();
int day = dueDate.getDayOfMonth();
//but here i want to import org.joda.time.LocalDate;
LocalDate dueDatejt = new LocalDate(year, month, day);有解决这个问题的办法吗?是否可以将Localdate (joda time)存储在mysql数据库中?
我找到了一个临时的解决方法,但我不认为这是正确的方法?
java.time.LocalDate dueDate = datepickerInvoiceDueDate.getValue();
int year = dueDate.getYear();
int month = dueDate.getMonthValue();
int day = dueDate.getDayOfMonth();
//import org.joda.time.LocalDate;
LocalDate dueDatejt = new LocalDate(year, month, day);发布于 2015-05-08 18:09:15
我认为你在你的“临时修复”中指的是LocalDate dueDatejt = new LocalDate(year, month, day);,这只是正确的代码。
如果你想要一些更明确的方法,我建议去掉Joda时间日期,因为新的java 8日期已经由Joda时间的创建者实现了,你会在一个非常相似的API中找到相同的功能。
关于在数据库中插入日期,你可以插入任何类型的日期,只要你之前将它们转换成java.sql.Date (或java.sql.Timestamp/java.sql.Time)。
对于标准java.time.LocalDate,您可以这样做:java.sql.Date sqlDate = java.sql.Date.valueOf(dueDate);
发布于 2015-05-08 18:11:31
这两个库的作者都在Joda-Time-website上编写
注意到Joda-Time被认为是一个很大程度上“完成”的项目。没有重大的增强计划。如果使用JavaSE8,请迁移到java.time (JSR310)。
因此,很明显,您应该使用临时解决方案完全限定Joda-Time的类名。相反,其目的和官方建议是迁移到Java-8平台上。
尽管通常没有一对一的迁移(需要一些努力!),但Joda-Time将不再用于真正的开发(放弃许多新功能,只是修复错误)这一事实是迁移的一个强有力的论据。支持迁移的另一个有力论据是缺少Joda-Time与Java-8的互操作性。作者原本计划支持像TemporalAccessor这样的低级接口,但后来放弃了(可能是因为缺乏资源)。这个概念是什么意思?互操作性的具体示例(抛开编写完全限定的类名这一恼人的事实不谈):
使用 TemporalAccessor**-Support的您可以这样写:**
org.joda.time.LocalDate joda = new org.joda.time.LocalDate(year, month, day);
java.time.LocalDate date = java.time.LocalDate.from(joda);,但实际上你必须这样写:
org.joda.time.LocalDate joda = new org.joda.time.LocalDate(year, month, day);
java.time.LocalDate date = java.time.LocalDate.of(joda.getYear(), joda.getMonthOfYear(), joda.getDayOfMonth());因此,很明显,在应用程序中同时支持这两个库并不是一个好主意。
https://stackoverflow.com/questions/30120488
复制相似问题