【发布时间】:2016-07-11 08:07:06
【问题描述】:
我必须从当前日期开始在 mysql db 中存储下一个 30 天的日期。如果该月结束,它应该自动从 nxt month 开始获取日期。当我以如下格式存储日期时,这种情况会正确发生 “2016 年 7 月 11 日星期一 13:28:23 IST”。事情就是这样发生的。
Calendar calendar = Calendar.getInstance();
if(repetitionSpan.equals("weekly")){
for(int i=0;i<7;i++){
String insertQuery="insert into notifications(notificationId,messageForUser,notificationReceiver,notificationSender,status,timeOfNotification,typeOfNotification)values('"+"RM"+calendar.getTimeInMillis()+"','"+notificationDetails.getMessageForUser()+"','"+notificationDetails.getNotificationReceiver()+"','"+notificationDetails.getNotificationSender()+"','"+notificationDetails.getStatus()+"','"+calendar.getTime()+"','"+notificationDetails.getTypeOfNotification()+"')";
sessionFactory.getCurrentSession().createSQLQuery(insertQuery).executeUpdate();
calendar.add(Calendar.DATE, 1);
}
在 ablove 情况下,它工作正常。但在另一种情况下,我以“yyyy/mm/dd”格式存储日期,它不起作用。
String DATE_FORMAT = "yyyy/mm/dd";
String date_string = "2001/08/12";
java.text.SimpleDateFormat sdf =
new java.text.SimpleDateFormat(DATE_FORMAT);
Date date = (Date)sdf.parse(date_string);
Calendar c1 = Calendar.getInstance();
c1.setTime(date);
int maxDay = c1.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println("maxDay is"+maxDay);
System.out.println("last month date is"+c1.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println("Date is : " + sdf.format(c1.getTime()));
for(int i=0;i<maxDay;i++){
c1.add(Calendar.DATE,1);
System.out.println("Date + 1 month is : " + sdf.format(c1.getTime()));
}
输出是:- 月份没有增加(即使在日期达到 31 之后)
【问题讨论】:
-
您能澄清一下“不工作”的确切含义吗?
-
String DATE_FORMAT = "yyyy/mm/dd";- 那是年/分/天 -
@Rhayene 我更新了我的问题,回答了您的问题
-
呃,不 - 老兄。您可能认为这很明显,但这并不正确。检查 JavaDocs。
-
@JavaDevelopers 请看一下
API或我的答案....mm是分钟....:S