日期从Groovy更改为String

时间:2016-03-16 15:05:35

标签: date groovy calendar

我必须找到上个月的最后一个日期 我正在使用Groovy脚本

我可以把日期部分搞定,但现在我必须把它变成yyyyMMdd形式的字符串。

到目前为止

代码(是的,它有效)

    import java.util.GregorianCalendar;
    import java.util.Calendar;
    import java.util.Date;

    Calendar aCalendar = Calendar.getInstance();
    // add -1 month to current month
       aCalendar.add(Calendar.MONTH, -1);

    // set actual maximum date of previous month
          aCalendar.set(Calendar.DATE,aCalendar.getActualMaximum(Calendar.DAY_OF_MONTH));

    //read it
      lastDateOfPreviousMonth = aCalendar.getTime();

以时间戳形式返回日期 20160229 105925.240

现在我需要从时间戳中提取20160229作为字符串

我已经尝试过所有事情......

1 个答案:

答案 0 :(得分:2)

如果它在Java 8上运行,则可以使用新的Java Time类:

import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.time.temporal.TemporalAdjusters

String date = LocalDate.now()
                       .minusMonths(1)
                       .with(TemporalAdjusters.lastDayOfMonth())
                       .format(DateTimeFormatter.ofPattern("yyyyMMdd"))

如果这是Java 7或Java 6,您可以使用Calendar和一些Groovy:

String date = Calendar.instance.with {
    add(MONTH, -1)
    set(DAY_OF_MONTH, getActualMaximum(DAY_OF_MONTH))
    time
}.format('yyyyMMdd')