0
我有這個Date date
輸入變量,如何將日期的日期設置爲1,月份爲1,年份爲1970年?我需要這樣做,因爲如果該日期包含在日期類型的範圍內,並且正在檢查的範圍具有默認日期1-1-1970,則會檢查此日期。因此,我想僅刪除日期的月份,日期和年份部分,只檢查時間以查看是否包含在範圍內。通過將它們的輸入日期設置爲1-1-1970將繞過該問題。將日期的日/月/年設置爲默認值,只關心時間
我有這個Date date
輸入變量,如何將日期的日期設置爲1,月份爲1,年份爲1970年?我需要這樣做,因爲如果該日期包含在日期類型的範圍內,並且正在檢查的範圍具有默認日期1-1-1970,則會檢查此日期。因此,我想僅刪除日期的月份,日期和年份部分,只檢查時間以查看是否包含在範圍內。通過將它們的輸入日期設置爲1-1-1970將繞過該問題。將日期的日/月/年設置爲默認值,只關心時間
可以使用Calendar
做到這一點:
Calendar calendar = Calendar.getInstance();
calendar.setTime(yourDate);
calendar.set(Calendar.YEAR, 1970);
calendar.set(Calendar.MONTH, Calendar.JANUARY);
calendar.set(Calendar.DATE, 1);
yourDate = calendar.getTime();
如果我理解你的要求,一個解決方案將使用一個Calendar -
public static Date getDate(int hh, int mm, int ss) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 1970);
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR, hh);
cal.set(Calendar.MINUTE, mm);
cal.set(Calendar.SECOND, ss);
return cal.getTime();
}
// Another approach; using epoch.
public static Date getDate2(int hh, int mm, int ss) {
long epoch = new GregorianCalendar(1970, 0, 1).getTimeInMillis();
long v = (ss * 1000) + (mm * 60 * 1000) + (hh * 60 * 60 * 1000);
return new Date(epoch + v);
}
public static void main(String args[]) {
Date a = getDate(1, 2, 3);
Date b = getDate2(1, 2, 3);
// Do we get the "same" Date?
System.out.println(a.toString().equals(b.toString()));
}
輸出是
true
的http:// i.imgur.com/Tvl46iw.gif – mre