将日期的日/月/年设置为默认值,仅关注时间

时间:2014-05-02 14:20:00

标签: java date

我有这个Date date输入变量,如何设置日期为1,月份为1,年份为1970年?我需要这样做,因为如果它包含在Date类型的范围内,则检查该日期,并且范围是检查具有默认日期1-1-1970。所以我想完全废弃日期的月,日和年部分,只检查时间是否包含在范围内。通过将输入日期设置为1-1-1970将绕过该问题。

2 个答案:

答案 0 :(得分:3)

您可以使用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();

答案 1 :(得分:1)

如果我理解您的要求,一个解决方案将使用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