Calendar中的一些用法

来源:互联网 发布:普通话水平考试软件 编辑:程序博客网 时间:2024/05/22 18:22
网上找的,刚刚接触Calendar类,有点复杂,记下来。

Java中对日期的处理需要用到Calendar类,其中有几个方法在使用时需要新手注意。

1. 在获取月份时,Calendar.MONTH + 1 的原因
Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们需要+1。

2. 在获取星期几 Calendar.DAY_OF_WEEK – 1 的原因
Java中Calendar.DAY_OF_WEEK其实表示:一周中的第几天,所以他会受到 第一天是星期几 的影响。
有些地区以星期日作为一周的第一天,而有些地区以星期一作为一周的第一天,这2种情况是需要区分的。
看下表的返回值

星期日为一周的第一天SUNMONTUEWEDTHUFRISATDAY_OF_WEEK返回值1234567星期一为一周的第一天MONTUEWEDTHUFRISATSUNDAY_OF_WEEK返回值1234567

所以Calendar.DAY_OF_WEEK需要根据本地化设置的不同而确定是否需要 “-1”
Java中设置不同地区的输出可以使用 Locale.setDefault(Locale.地区名) 来实现。

3. 获取日期时 Calendar.DAY_OF_MONTH 不需要特殊的操作,他直接返回一个月中的第几天

有关其他一些方法,附上测试代码:

package com.cn.pc.test;import java.util.Date;import java.text.SimpleDateFormat;import java.text.DateFormat;import java.text.ParseException;import java.util.Calendar;/** * Created by Administrator on 2017/8/31. */public class CalendarTest {    public static void main(String[] args)    {        // 字符串转换日期格式        DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        // 完整显示今天日期时间        String str = sdf.format(new Date());        System.out.println(str);        // 创建 Calendar 对象        Calendar calendar = Calendar.getInstance();        try {            // 对 calendar 设置时间的方法            // 设置传入的时间格式//            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");            // 指定一个日期            Date date = sdf.parse("2017-08-31 15:24:16");            // 对 calendar 设置为 date 所定的日期            calendar.setTime(date);            // 按特定格式显示刚设置的时间            str = sdf.format(calendar.getTime());            System.out.println(str);        }        catch (ParseException e)        {            e.printStackTrace();        }        // 或者另一種設置 calendar 方式        // 分別爲 year, month, date, hourOfDay, minute, second//        calendar = Calendar.getInstance();//        calendar.set(2017, 8, 31, 17, 35, 44);        str = sdf.format(calendar.getTime());        System.out.println(str);        // Calendar 取得当前时间的方法        // 初始化 (重置) Calendar 对象        calendar = Calendar.getInstance();        // 或者用 Date 来初始化 Calendar 对象        calendar.setTime(new Date());        System.out.println("new Date():" + calendar.getTime());        // setTime 类似上面一行        // Date date = new Date();        // calendar.setTime(date);        str = sdf.format(calendar.getTime());        System.out.println(str);        // 显示年份        int year = calendar.get(Calendar.YEAR);        System.out.println("year is = " + String.valueOf(year));        // 显示距离第一个月的月份 (从0开始, 实际显示要加一)        int month = calendar.get(Calendar.MONTH);        System.out.println("nth is = " + (month + 1));        // 本周几,根据Locale.setDefault(Locale.地区名)来确定        int week = calendar.get(Calendar.DAY_OF_WEEK);        System.out.println("week is = " + week);        // 今年的第 N 天        int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);        System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR);        // 本月第 N 天        int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);        System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH));        // 3小时以后        calendar.add(Calendar.HOUR_OF_DAY, 3);        int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);        System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY);        // 当前分钟数        int MINUTE = calendar.get(Calendar.MINUTE);        System.out.println("MINUTE = " + MINUTE);        // 15 分钟以后        calendar.add(Calendar.MINUTE, 15);        MINUTE = calendar.get(Calendar.MINUTE);        System.out.println("MINUTE + 15 = " + MINUTE);        // 30分钟前        calendar.add(Calendar.MINUTE, -30);        MINUTE = calendar.get(Calendar.MINUTE);        System.out.println("MINUTE - 30 = " + MINUTE);        // 格式化显示        str = sdf.format(calendar.getTime());        System.out.println(str);        // 重置 Calendar 显示当前时间        calendar.setTime(new Date());        str = sdf.format(calendar.getTime());        System.out.println(str);        // 创建一个 Calendar 用于比较时间        Calendar calendarNew = Calendar.getInstance();        // 设定为 5 小时以前,后者大,显示 -1        calendarNew.add(Calendar.HOUR, -5);        System.out.println("时间比较:" + calendarNew.compareTo(calendar));        // 设定7小时以后,前者大,显示 1        calendarNew.add(Calendar.HOUR, +7);        System.out.println("时间比较:" + calendarNew.compareTo(calendar));        // 退回 2 小时,时间相同,显示 0        calendarNew.add(Calendar.HOUR, -2);        System.out.println("时间比较:" + calendarNew.compareTo(calendar));    }}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 户口名字打错了怎么办 寻仙会心几率差怎么办 注册商标下来了没收到怎么办 金融公司倒闭欠的钱怎么办 买车贷款被骗了怎么办 定投终止后钱怎么办 受到小贷公司催款威胁怎么办 合同保证金单据丢了怎么办 公司注销期间发现欠税怎么办 公司注销后银行账户怎么办 注销公司营业执照和公章丢失怎么办 工商核名过期了怎么办 核名后的许可没办下来怎么办 重庆公司核名有同名的怎么办 新电视不全屏怎么办左右有黑边 所学类别找不到音乐表演怎么办 公司口头通知不续签合同怎么办 雪纺衬衣皱了怎么办 狗打架受伤怎么办泰迪 大狗打架破了怎么办 舌头上长溃疡怎么办吃什么药 悠悠球不回弹怎么办啊 围棋遇到对方不停围堵怎么办? s围棋业余四段想提升怎么办 wps禁止创建分享链接怎么办 驾驶人开车违章不认可怎么办 京东白条退货分期服务费怎么办 新车年检标丢了怎么办 异地违章罚单丢了怎么办 异地现场违章罚单丢了怎么办 新车没有牌照过停车杆怎么办 驾照换证时间过了怎么办 杭州告知单丢了怎么办 电工证过了复审日期怎么办 大人有居住证小孩没有怎么办 异地补办身份证没有暂住证怎么办 挂科了心里难受怎么办 c1升b2考不过怎么办 b2驾照扣了1分怎么办 红绿色盲驾考怎么办 驾驶证忘带被交警查了怎么办