代码之家  ›  专栏  ›  技术社区  ›  Relm

unix时间戳的日期字符串,用于检查用户是否足够老[重复]

  •  0
  • Relm  · 技术社区  · 8 年前

    public boolean isUserOldEnough(String birthDay) {
            Date date = null;
            try {
                date = new SimpleDateFormat("YYYY/MM/DD").parse(birthDay);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
    
            long birthTime = calendar.getTimeInMillis();
            return birthTime > getMinAge();
        }
    
        public long getMinAge() {
            Calendar calendar    = Calendar.getInstance();
            int      currentYear = calendar.get(Calendar.YEAR);
            calendar.set(currentYear - 13, Calendar.MONTH, Calendar.DAY_OF_MONTH);
            return calendar.getTimeInMillis();
        }
    

    从第一种方法开始 2000/01/21 ,我明白了 946159200000 ,而第二种方法 1110033481894 我怎么从第一次得到正确的方法?

    1 : 946159200000
    2 : 1110033481894
    

    第一种方法出了点问题,我做不好。

    1 回复  |  直到 8 年前
        1
  •  0
  •   user8959091 user8959091    8 年前

    "YYYY/MM/DD" ,必须使用 "yyyy/MM/dd" ,试试看:

    Date date = null;
    try {
        date = new SimpleDateFormat("yyyy/MM/dd").parse("2000/1/21");
    } catch (ParseException e) {
        e.printStackTrace();
    }
    System.out.println(date);
    

    它打印: Fri Jan 21 00:00:00 EET 2000

    Date date = null;
    try {
        date = new SimpleDateFormat("YYYY/MM/DD").parse("2000/1/21");
    } catch (ParseException e) {
        e.printStackTrace();
    }
    System.out.println(date);
    

    Mon Jan 03 00:00:00 EET 2000

    编辑:如果一个用户已经足够大了,那么他的出生日期的毫秒数小于13岁之前的毫秒数。
    将代码替换为:

    public boolean isUserOldEnough(String birthDay) {
        Date date = null;
        try {
            date = new SimpleDateFormat("yyyy/MM/dd").parse(birthDay);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        long birthTime = calendar.getTimeInMillis();
        return birthTime <= getMinAge();
    }
    
    public long getMinAge() {
        Calendar calendar    = Calendar.getInstance();
        int currentYear = calendar.get(Calendar.YEAR);
        int currentMonth = calendar.get(Calendar.MONTH);
        int currentDay = calendar.get(Calendar.DAY_OF_MONTH);
        calendar.set(currentYear - 13, currentMonth, currentDay);
        return calendar.getTimeInMillis();
    }
    
    推荐文章