JAVA Calendar

先写一个简单的例子,判断是否年满18周岁。对于这个问题我的第一反映是计算现在与其生日的时间差,通过时间戳来计算这个差值是否是18年,但是这样就会出现一个问题,之间会有闰年,而且每个月的天数也不一致;第二种是通过出生年加上18,至少这样让我感觉没有第一种方法的如此多的不确定性。代码如下:

boolean isAudit = false;

        try {
            //格式化
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
            //出生日期
            Date birthday = simpleDateFormat.parse("19970724");

            Calendar calendar = Calendar.getInstance();
            calendar.setTime(birthday);
            //出生日期加上18年
            calendar.add(Calendar.YEAR, 18);

            //当前时间
            Date now = new Date();
            Calendar nowCalendar = Calendar.getInstance();

            //将时分秒设置为0,格式为19880911 00:00:00
            nowCalendar.setTime(now);
//          如果用此Field则按十二小时格式设置值,Noon and midnight表示为0,而不是12.
//          nowCalendar.set(Calendar.HOUR, 0);
            nowCalendar.set(Calendar.HOUR_OF_DAY, 0);
            nowCalendar.set(Calendar.MINUTE, 0);
            nowCalendar.set(Calendar.SECOND, 0);

            if(calendar.before(nowCalendar)){
                isAudit = true;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }

Calendar

Calendar 在 Java 中是一个抽象类(Abstract Class)。

Calendar与时间的转换

Calendar calendar = Calendar.getInstance();
// 从一个 Calendar 对象中获取 Date 对象
Date date = calendar.getTime();
// 将 Date 对象反应到一个 Calendar 对象中,

// 所以我们必需先获得一个实例,然后设置 Date 对象
calendar.setTime(date);
注意事项

月份的起始值为0而不是1,所以要设置八月时,我们用7而不是8。

calendar.set(Calendar.MONTH, 7);

SimpleDateFormat

SimpleDateFormat函数语法:

G 年代标志符
y 年
M 月
d 日
h 时 在上午或下午 (1~12)
H 时 在一天中 (0~23)
m 分
s 秒
S 毫秒
E 星期
D 一年中的第几天
F 一月中第几个星期几
w 一年中第几个星期
W 一月中第几个星期
a 上午 / 下午 标记符
k 时 在一天中 (1~24)
K 时 在上午或下午 (0~11)
z 时区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值