从下面的java代码中我得到了一个月的第一个&最后一个dateTimestamp,但在这里我需要最后一个dateTimestamp作为 - “Mon Aug 31 23:59:59 IST 2015”而不是 - “Mon Aug 31 00:00:00 IST 2015”?
Calendar cal = Calendar.getInstance();
int year = 2015;
int month = 07;
cal.set(cal.DATE,1);
cal.set(cal.YEAR,year);
cal.set(cal.MONTH, month);
String firstDate = (cal.getActualMinimum(cal.DATE) + "/" + (month+1) + "/" +year);
System.out.println("firstDate-->"+"\t"+firstDate);
String lastDate = (cal.getActualMaximum(cal.DATE) + "/" + (month+1) + "/" +year);
System.out.println("lastDate-->"+"\t"+lastDate);
DateFormat firstFormat = new SimpleDateFormat("dd/MM/yyyy");
Date beginDate = firstFormat.parse(firstDate);
System.out.println("BeginDate Timestamp"+ "\t" + beginDate);
DateFormat secoundFormat = new SimpleDateFormat("dd/MM/yyyy");
Date endDate = secoundFormat.parse(lastDate);
System.out.println("endDate Timestamp"+ "\t" + endDate);
输出: - >
firstDate--> 1/8/2015
lastDate--> 31/8/2015
BeginDate Timestamp Sat Aug 01 00:00:00 IST 2015
endDate Timestamp Mon Aug 31 00:00:00 IST 2015
如果我们有任何解决方案,请帮助我。
答案 0 :(得分:0)
如果我理解你的问题,看起来好像你想把一年和一个月传递给一个方法,并回到过去一个月的最后一天。
我建议考虑(按此顺序):
从1.8开始,许多类似JodaTime的功能被添加到jdk中,例如看https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html(如果你不使用1.8,你可以使用joda lib,假设你的组织允许它)
Calendar.getInstance()提供默认的TimeZone和默认的Locale,这意味着正在运行的JVM的定义。您可能需要或可能不需要考虑这一点并实现不仅仅是getInstance()。请参阅API javadoc。
假设一个Gregeorian日历(嘿,你可能是Bahaian,一年有19个月......),这里有一个部分实现使用JDK 1.7,JodaTime jar 2.2,validation-1.0。 0.GA jar:
@Test
public void testDate() {
final String dateStringOfFirstDay = "1.7.2015";
final Date lastDayOfMonth = getLastDayOfMonth(dateStringOfFirstDay);
Assert.assertNotNull(lastDayOfMonth);
//more assertions ...
}
private Date getLastDayOfMonth(@NotNull String dateStringOfFirstDay) {
//further validation here necessary according to required date format
DateTime dt = DateTime.parse(dateStringOfFirstDay);
return dt.dayOfMonth().withMaximumValue().toDate();
}
DateFormat / DateTimeFormat的定义以及进一步的结果断言由你决定。
祝你好运!
答案 1 :(得分:0)
伙计我为我的问题找到了解决方案! 我想它也会对你有所帮助......
Calendar calendar = Calendar.getInstance();
int year=2015;
int month=7;
int date=31;
int hourOfDay=23;
int minute=59;
int second=59;
int milliSecond=999;
calendar.set(year, month, date, hourOfDay, minute, second);
calendar.set(calendar.MILLISECOND, milliSecond);
System.out.println("Time from Calendar: "+calendar.getTime());
long timeInMilliSeconds=calendar.getTimeInMillis();
System.out.println("timeInMilliSeconds from calendar: "+timeInMilliSeconds);
Timestamp timestamp=new Timestamp(timeInMilliSeconds);
System.out.println(timestamp);
上述程序给出了所选月份中最后一个日期的上一个时间戳。 getTimeInMillis()从1970年1月1日到以毫秒为单位的当前时间。 使用这些毫秒我得到时间戳。 谢谢你的帮助!
输出: - >
Time from Calendar: Mon Aug 31 23:59:59 IST 2015
timeInMilliSeconds from calendar: 1441045799999
2015-08-31 23:59:59.999