计算上一个日历期间

时间:2015-09-09 11:24:23

标签: java date datetime time timestamp

我有两个时间戳:句号的开始/结束(日历月,周或日)。

我需要计算前一个时期(上个月,一周等)。我尝试使用LocalDateTime函数来完成它。例如。在月份期间使用getMonthOfYear() - 1但是如何处理最后一天(在DayTo之前)?

E.g。九月的getDayOfMonth()返回30,但在上一期(八月)我需要31等。

Long fromDateMillis = 1440277200000L;
Long toDateMillis = 1440363599000L;

LocalDateTime fromLocalDate = new LocalDateTime(fromDateMillis);
LocalDateTime toLocalDate = new LocalDateTime(toDateMillis)

int beforeYear = fromLocalDate.getYear();
int beforeMonthFrom = fromLocalDate.getMonthOfYear() - 1;
int beforeMonthTo = toLocalDate.getMonthOfYear() - 1;
int beforeDayFrom = fromLocalDate.getDayOfMonth();
int beforeDayTo = toLocalDate.getDayOfMonth();
Timestamp prevFromDate = Timestamp
        .valueOf(java.time.LocalDateTime.of(beforeYear, beforeMonthFrom, 1, 0, 0, 0));
Timestamp prevToDate = Timestamp
        .valueOf(java.time.LocalDateTime.of(beforeYear, beforeMonthTo, beforeDayTo, 0, 0, 0));

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您将获得当月的日期数。

Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timestamp);
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
cal.getTimeInMillis();

最后一行给你timestanp作为Long。所以你可以做到:

Timestamp timestamp = new Timestamp(cal.getTimeInMillis());

日历让你做你想做的所有事情。 看看这个http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html