我在计算当月的下一个最后一天是否为计划发送的通知时遇到问题.
这是我的代码:
RecurrenceFrequency recurrenceFrequency = notification.getRecurrenceFrequency();
Calendar nextNotifTime = Calendar.getInstance();
Run Code Online (Sandbox Code Playgroud)
这是引起我相信问题的界限:
nextNotifTime.add(recurrenceFrequency.getRecurrencePeriod(),
recurrenceFrequency.getRecurrenceOffset());
Run Code Online (Sandbox Code Playgroud)
如何使用日历正确设置通知的下个月的最后一天?
我有几个事件的日期,以毫秒 [1] 表示,我想知道哪些事件在当前周和当月,但我无法弄清楚如何获得第一天(日/月/年) )运行周并将其转换为毫秒,同一个月的第一天.
[1]Since January 1, 1970, 00:00:00 GMT
Run Code Online (Sandbox Code Playgroud) 我的输入字符串日期如下:
String date = "1/13/2012";
Run Code Online (Sandbox Code Playgroud)
我得到的月份如下:
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Date convertedDate = dateFormat.parse(date);
String month = new SimpleDateFormat("MM").format(convertedDate);
Run Code Online (Sandbox Code Playgroud)
但是如何在给定的字符串日期中获取该月的最后一个日历日?
例如:对于String "1/13/2012",输出必须是"1/31/2012".
您将如何重写下面的方法,该方法将返回下个月的第一天,org.joda.time包装在Joda-Time中?
public static Date firstDayOfNextMonth() {
Calendar nowCal = Calendar.getInstance();
int month = nowCal.get(Calendar.MONTH) + 1;
int year = nowCal.get(Calendar.YEAR);
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month);
cal.set(Calendar.DAY_OF_MONTH, 1);
Date dueDate = new Date(cal.getTimeInMillis());
return dueDate;
}
Run Code Online (Sandbox Code Playgroud) 为了获得月份的最后日期,我已经写了这个函数
/**
* @param month integer value of month
* @param year integer value of month
* @return last day of month in MM/dd/YYYY format
*/
private static String getDate(int month, int year) {
Calendar calendar = Calendar.getInstance();
// passing month-1 because 0-->jan, 1-->feb... 11-->dec
calendar.set(year, month - 1, 1);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
Date date = calendar.getTime();
DateFormat DATE_FORMAT = new SimpleDateFormat("MM/dd/YYYY");
return DATE_FORMAT.format(date);
}
Run Code Online (Sandbox Code Playgroud)
对于所有输入它的工作正常,当月份是12月时有一个例外,即getDate(12,2012)返回12/31/2013但它应该返回12/31/2012.请解释一下行为和解决方案.
我的输入字符串日期如下:
String date = "1/31/2022";
Run Code Online (Sandbox Code Playgroud)
我正在转换为日期:
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
Run Code Online (Sandbox Code Playgroud)
我如何知道我的日期是否是该月的最后一天?
例如:对于字符串“1/31/2022”,输出应该为 true。2023 年 2 月 2 日,速度应该会很快。
这是在 Jenkins 的 Groovy 中运行,但我相信我也可以使用 java