黑马程序员技术交流社区

标题: 【石家庄校区】Date,SimpleDateFormat和Calendar类的使用 [打印本页]

作者: xiekai_sjz    时间: 2017-10-25 18:37
标题: 【石家庄校区】Date,SimpleDateFormat和Calendar类的使用
本帖最后由 xiekai_sjz 于 2017-10-25 18:37 编辑

Date类:
   日期类, 表示特定的瞬间, 可以通过方法来设定所表示的时间, 可以表示任意的时间。注意:进行日期相关的操作时需要用到的是java.utils.Date。
    Date类的构造方法:
        * Date Date(): 创建Date对象, 并表示当前系统时间
        * Date Date(long timestamp): 创建Date对象, 使用指定的时间    Date类的常用方法:
        * void setTime(long time): 设置Date对象的时间
       * long getTime(): 获取Date对象中保存的时间毫秒值.
       * 注意, 无论何时调用, 都是获取Date对象中已经存储的那一瞬间的时间, 而不是调用方法时的时间    Date的使用:
    案例一:使用Date类代表当前系统时间
            
[HTML] 纯文本查看 复制代码
Date d = new Date();            System.out.println(d);

        使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下:
            Tue Oct 24 15:05:42 CST 2017
        在该格式中,Tue代表TUESDAY(周二),Oct代表OCTOBER(十月),24代表24号,CST代表China Standard Time(中国标准时间,也就是北京时间(东八区))。
    案例二:使用Date类获取前一天的系统时间
            
[Java] 纯文本查看 复制代码
Date d = new Date();
            long l1 = d.getTime();//获取当前系统时间的毫秒值
            long l2 = l1 - 1000*60*60*24;//用当前的毫秒值减去一天的毫秒值,得到的是前一天的毫秒值
            d.setTime(l2);//设置Date对象的时间,此时Date对象表示的是前一天的时间
            System.out.println(d);

        显示结果如下:
            Mon Oct 23 15:12:58 CST 2017

SimpleDateFormat类:
    专门用于格式化和解析时间。
     SimpleDateFormat类的常用方法:
         *格式化: Date对象 -> 指定格式的字符串, 如2017-05-01 12:34:12
            * String format(Date date): 格式化Date对象返回字符串
        * 解析: 字符串 -> Date对象
            * Date parse(String source): 将字符串解析为Date对象
                * 该方法抛出ParseException解析异常, 因为字符串可能不匹配指定的格式        * 常用日期模式: 详细可见API文档
             * y : 年
             * M : 月
             * m : 分
             * D : 年中的天
             * d : 月中的天
             * H : 小时(24小时制)
             * K : 小时(12小时制)
             * S:  毫秒
             * s : 秒
             * E : 星期
             示例: yyyy-MM-dd E HH:mm:ss.SSS, 结果为2017-10-24 星期二 15:29:15.868
    SimpleDateFormat类的使用:
    案例三:
         
[Java] 纯文本查看 复制代码
// 将当前日期格式化为”xxxx年xx月xx日”并打印
        // 创建SimpleDateFormat对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        // 创建Date对象, 使用空参, 即为当前时间
        Date now = new Date();
        // 使用SimpleDateFormat对象格式化
        String text = sdf.format(now);
        System.out.println(text);
        
        // 已知日期字符串”2000-10-01”, 将该日期字符串格式化为日期对象,获取该日期对象的毫秒值并打印
        // 由于格式和上面年月日不同, 所以需要重新创建一个SimpleDateFormat对象, 使用新的格式
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
        // 格式化字符串, 返回Date对象. 有异常, 需要抛出. 如果字符串格式和模式不匹配, 则会抛出异常
        Date date = sdf2.parse("2000-10-01");
        // 打印该日期对象的毫秒值
        System.out.println(date.getTime());


Calendar类
    日历类, 也是处理时间和日期的类, 用于替代Date类
     * 创建对象
        * 静态方法: static Calendar getInstance()
            * 示例: Calendar c = Calendar.getInstance()
    * 静态字段: 表示时间的某个部分
        * Calendar.YEAR : 年份
        * Calendar.MONTH : 月份. 注意月份数值是0-11
        * Calendar.DAY_OF_MONTH : 日期
        * Calendar.HOUR : 小时(12小时制)
        * Calendar.HOUR_OF_DAY : 小时(24小时制)
        * Calendar.MINITE : 分钟
        * Calendar.SECOND : 秒
    * 成员方法
        * 获取时间的指定部分
            * c.get(时间字段): 获取指定的时间部分
        * 设置时间的指定部分
            * c.set(时间字段, 指定数值): 使用指定数值设置指定的时间部分
        * 在指定时间字段上增加/减少时间
            * c.add(时间字段, 增加的时间值): 根据时间字段的单位增加指定的时间值, 如时间字段是天, 增加n天, 时间字段是秒, 增加n秒. 减少用负数
    Calendar类的使用:
    案例四:
   
[Java] 纯文本查看 复制代码
public class Test {

    public static void main(String[] args) {
        // 创建Calendar对象
        Calendar calendar = Calendar.getInstance();
        
        // 测试get方法
        printCalendar(calendar);
        
        // 测试add方法
        calendar.add(Calendar.YEAR, 1);  // 在当前时间基础上增加一年
        calendar.add(Calendar.MONTH, -1);  // 在当前时间基础上减少一月
        printCalendar(calendar);
        
        // 测试set方法
        calendar.set(Calendar.YEAR, 2000);
        calendar.set(Calendar.MONTH, 1);  // 注意, 从0开始, 1就是2月
        calendar.set(Calendar.DAY_OF_MONTH, 1);
        printCalendar(calendar);
    }

    // get方法获取时间并打印
    private static void printCalendar(Calendar calendar) {
        int year = calendar.get(Calendar.YEAR);  // 年
        int month = calendar.get(Calendar.MONTH);  // 月, 注意从0开始
        int day = calendar.get(Calendar.DAY_OF_MONTH); // 日期
        System.out.println("今天是" + year + "年" + (month + 1) + "月" + day + "日");
    }
}

            

















欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2