我怎样才能同时使用 org.joda.time.LocalDate 和 java.time.LocalDate;
How can i use org.joda.time.LocalDate and java.time.LocalDate at the same time;
我正在练习如何处理日期。但是当我想使用 javafx 日期选择器时,我卡住了。因为它只适用于 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 时间)存储在 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);
我认为你的 "temporary fix" 中的 LocalDate dueDatejt = new LocalDate(year, month, day);
是正确的代码。
如果你想要一些更明确的方法,我建议去掉 Joda 时间日期,因为新的 java 8 日期已经由 Joda time 的创建者实现,你会发现是一样的API.
中的功能非常相似
关于将日期插入数据库,你可以插入任何类型的日期,前提是你在之前将它们转换为java.sql.Date(或java.sql.Timestamp/java.sql.Time) .
对于标准 java.time.LocalDate,您可以这样做:java.sql.Date sqlDate = java.sql.Date.valueOf(dueDate);
两个库的作者在 Joda-Time-website 上写道:
Note that Joda-Time is considered to be a largely “finished” project.
No major enhancements are planned. If using Java SE 8, please migrate
to java.time (JSR-310).
很明显,您应该使用解决方法来完全限定 Joda-Time 的 class 名称,仅作为临时解决方案。相反,官方建议是在 Java-8 平台上迁移。
虽然通常没有 1:1-迁移(需要一些努力!),但 Joda-Time 在实际开发中将不再存在(放弃许多新功能,只是错误修复)这一事实是一个移民的有力论据。支持迁移的另一个有力论据是 Joda-Time 与 Java-8 缺少互操作性。作者原本计划支持像 TemporalAccessor
这样的低级接口,但后来放弃了(可能是因为缺乏资源)。这个概念是什么意思?互操作性的具体示例(抛开编写完全限定的 class 名称这个令人讨厌的事实):
有了 TemporalAccessor
-支持你可以写:
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());
所以很明显,在您的应用程序中同时支持这两个库并不是一个好主意。
我正在练习如何处理日期。但是当我想使用 javafx 日期选择器时,我卡住了。因为它只适用于 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 时间)存储在 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);
我认为你的 "temporary fix" 中的 LocalDate dueDatejt = new LocalDate(year, month, day);
是正确的代码。
如果你想要一些更明确的方法,我建议去掉 Joda 时间日期,因为新的 java 8 日期已经由 Joda time 的创建者实现,你会发现是一样的API.
中的功能非常相似关于将日期插入数据库,你可以插入任何类型的日期,前提是你在之前将它们转换为java.sql.Date(或java.sql.Timestamp/java.sql.Time) .
对于标准 java.time.LocalDate,您可以这样做:java.sql.Date sqlDate = java.sql.Date.valueOf(dueDate);
两个库的作者在 Joda-Time-website 上写道:
Note that Joda-Time is considered to be a largely “finished” project. No major enhancements are planned. If using Java SE 8, please migrate to java.time (JSR-310).
很明显,您应该使用解决方法来完全限定 Joda-Time 的 class 名称,仅作为临时解决方案。相反,官方建议是在 Java-8 平台上迁移。
虽然通常没有 1:1-迁移(需要一些努力!),但 Joda-Time 在实际开发中将不再存在(放弃许多新功能,只是错误修复)这一事实是一个移民的有力论据。支持迁移的另一个有力论据是 Joda-Time 与 Java-8 缺少互操作性。作者原本计划支持像 TemporalAccessor
这样的低级接口,但后来放弃了(可能是因为缺乏资源)。这个概念是什么意思?互操作性的具体示例(抛开编写完全限定的 class 名称这个令人讨厌的事实):
有了 TemporalAccessor
-支持你可以写:
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());
所以很明显,在您的应用程序中同时支持这两个库并不是一个好主意。