【发布时间】:2016-10-13 18:42:51
【问题描述】:
我正在开发现有的 java 应用程序。我的要求是将一个月的价值传递给服务。之前在我的代码中,他们使用 GregorianCalendar 来表示日期。目前我修改了部分代码以使用 org.joda.time.LocalDate。我知道对于 GregorianCalendar 日期索引从零开始,所以今天它显示为 09/13/2016(表示 09 代表 10 月)。 但以我的 LocalDate 表示,它是 2016 年 10 月 13 日。如何从我的代码更改以匹配现有代码的值(即,09/13/2016 以表示 2016 年 10 月 13 日)。
下面是我的代码。
MyForm.java
private Date myDate;
public java.util.Date getMyDate()
{
return this.myDate;
}
public void setDate()
{
int day = getMyDay();
int month = getMyMonth();
GregorianCalendar gc = new GregorianCalendar();
// Advance to next year if the month selected is before current month. This
// only happens at year end.
if (gc.get(Calendar.MONTH) > month)
{
gc.add(Calendar.YEAR, 1);
}
gc.set(Calendar.DATE, day);
gc.set(Calendar.MONTH, month);
this.myDate = gc.getTime();
}
MyAction.java
下面的代码代表我的 String[] 保存日期值。
List<LocalDate> localDatesList = service.getMyDates();
final List<String> tempDatesList = new ArrayList<>(localDatesList.size());
for (final LocalDate date : localDatesList) {
tempDatesList.add(date.toString());
}
final String[] formattedDates = tempDatesList.toArray(new String[localDatesList.size()]);
//represents the dates as 2016-10-14 2016-10-15 .
请告知解决此问题的最佳方法。哪一个是修改的最佳选择。我们是否可以处理 LocalDate 和 GregorianCalendar 的这个月份不匹配,以便在比较从 LocalDate 和 GregorianCalendar 创建的对象时具有相同的月份值。
--编辑--
我想将下面的 List<LocalDate> 转换为与 GregorianCalendar 匹配。我希望我的 String[] 保存与 GregorianCalendar 日期值匹配的值(即 9 代表十月)。请告知我需要将 LocalDate 转换为 GregorianCalendar ...
List<LocalDate> localDatesList = service.getMyDates();
final List<String> tempDatesList = new ArrayList<>(localDatesList.size());
for (final LocalDate date : localDatesList) {
tempDatesList.add(date.toString());
}
final String[] formattedDates = tempDatesList.toArray(new String[localDatesList.size()]);
【问题讨论】:
-
我不明白你打算做什么。类似stackoverflow.com/questions/26246030/… ???
-
@GhostCat - 我的应用程序中的一种..现有代码使用 GregorianCalendar API,并且该月值索引从 0 开始,因此对于 10 月,它将 09 表示为月值。但是对于 LocalDate ,10 月的月份值为 10。我想在 LocalDate 和 GregorianCalendar API 中匹配月份值。
-
任何使用 DateTimeFormatter 正确格式化的 GregorianCalendar 日期将在十月的数字表示中显示 10。如果您使用一些普通格式,则必须添加 1。
标签: java jodatime gregorian-calendar