zoukankan      html  css  js  c++  java
  • Java 时间类

    一、Date类

    Date:表示特定的瞬间,精确到毫秒
    构造方法:
         (1)public Date():根据当前的默认毫秒值创建日期对象
         (2)public Date(long date):根据给定的毫秒值创建日期对象
    成员方法:
         (1)public long getTime():获取时间,返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
         (2)public long setTime(long time):设置时间,表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
                注意:一般的获取时间,我们更常用:System.currentTimeMillis()方法。

    Date类需要掌握的内容
           1、从Date得到一个毫秒值
                getTime()
           2、把一个毫秒值转换成Date
                A:构造方法实现:public Date(long date)
                B:成员方法实现:public long setTime(long time)

    二、DateFormat类

    程序开发中
                                 String ————————>   Date
                   日期控件                     转换                           数据库
                                 Date    ————————>  String
    DateFormat类:日期/时间格式化子类的抽象类,我们使用具体子类:SimpleDateFormat
    成员方法:
          1、格式化:Date ——> String
               public final String format(Date date)
          2、解 析:String ——> Date
               public Date parse(String source)
    DateFormat类的具体实现类:SimpleDateFormat
    SimpleDateFormat类的构造方法
       (1)SimpleDateFormat():默认日期/时间模式
       (2)SimpleDateFormat(String pattern):给定日期/时间模式
               日期/时间模式:
                                  年 y
                                  月 M
                                  日 d
                                  时 H
                                  分 m
                                  秒 s

               Date -- String:格式化
                    // 创建日期对象
                    Date d = new Date();
                    // 创建格式化对象
                    //第一种:默认日期/时间模式
                    SimpleDateFormat sdf = new SimpleDateFormat();
                    public final String format(Date date)
                    String s = sdf.format(d);
                    System.out.println(s);
                    // 第二种:给定日期/时间模式
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                    // public final String format(Date date)
                    String s = sdf.format(d);
                    System.out.println(s);
               String -- Date:解析
                    String str = "2016-09-30 19:29:30";
                    //注意:字符串解析为日期的时候,字符串格式必须和给定的字符串格式匹配
                    SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    Date dd = sdf2.parse(str);
                    System.out.println(dd);

    案例自定义封装,日期和字符串相互转换的工具类
          import java.text.ParseException;
          import java.text.SimpleDateFormat;
          import java.util.Date;

          /**
          * 日期和字符串相互转换的工具类
          * @author
          */
          public class DateUtil {
                private DateUtil() {
                }

                /**
                * 方法的作用:把一个日期对象转成一个字符串
                * @param d 被格式化的日期对象
                * @param format 传递过来的要被转换的格式
                * @return 格式化后的字符串
                */
                public static String dateToString(Date d, String format) {
                      // SimpleDateFormat sdf = new SimpleDateFormat(format);
                      // return sdf.format(d);
                      return new SimpleDateFormat(format).format(d);
                }

                 /**
                 * 方法的作用:把一个字符串解析成一个日期对象
                 * @param s 被解析的字符串
                 * @param format 传递过来的要被转换的格式
                 * @return 解析后的日期对象
                 * @throws ParseException
                 */
                 public static Date stringToDate(String s, String format) throws ParseException {
                       return new SimpleDateFormat(format).parse(s);
                 }
            }

    三、Calender类

    Calendar类:一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(如:获得下星期的日期)提供了一些方法。
    日历字段:
        (1)public static final int YEAR:指示年的 get 和 set 的字段数字,指示年。
        (2)public static final int MONTH:指示月份的 get 和 set 的字段数字,指示一年中的月。
        (3)public static final int DATE:get 和 set 的字段数字,指示一个月中的某天。
        (4)public static final int HOUR_OF_DAY:get 和 set 的字段数字,指示一天中的小时。
        (5)public static final int MINUTE:get 和 set 的字段数字,指示一小时中的分钟。
        (6)public static final int SECOND:get 和 set 的字段数字,指示一分钟中的秒。
        (7)public static final int DAY_OF_YEAR:get 和 set 的字段数字,指示当前年中的天数。
        (8)public static final int DAY_OF_MONTH:get 和 set 的字段数字,指示一个月中的某天。
        (9)public static final int DAY_OF_WEEK:get 和 set 的字段数字,指示一个星期中的某天。该字段可取的值为 SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY 和 SATURDAY。

    常用方法:

        (1)public static Calendar getInstance():使用默认时区和语言环境获得一个日历
               如:Calendar rightNow = Calendar.getInstance();
        (2)public int get(int field):返回给定日历字段的值。日历类中的每个日历字段都是静态的成员变量,并且是int类型。
               // 获取年
               int year = rightNow.get(Calendar.YEAR);
               // 获取月
               int month = rightNow.get(Calendar.MONTH);
               // 获取日
               int date = rightNow.get(Calendar.DATE);
               System.out.println(year + "年" + (month + 1) + "月" + date + "日");
        (3)public void add(int field,int amount):根据给定的日历字段和对应的时间,来对当前的日历进行操作。
               // 5年后的10天前
               c.add(Calendar.YEAR, 5);
               c.add(Calendar.DATE, -10);
        (4)public final void set(int year,int month,int date):设置当前日历的年月日
               c.set(2016, 10, 30);//注意:月是从0开始计数
    案例获取任意一年的二月有多少天
          分析:
                 A:键盘录入任意的年份
                 B:设置日历对象的年月日
                    年:A录入的数据
                    月:2
                    日:1
                C:把时间往前推一天,就是2月的最后一天
                D:获取这一天输出
          代码实现:
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入年份:");
                int year = sc.nextInt();
                Calendar c = Calendar.getInstance();
                c.set(year, 2, 1);
                c.add(Calendar.DATE, -1);
                System.out.println(c.get(Calendar.DATE));

    拓展public static Calendar getInstance()方法设计思想扩展
           这种方法的思想:
                 abstract class Person {
                       public static Person getPerson() {
                             return new Student();
                       }
                 }
                 class Student extends Person {
                 }

  • 相关阅读:
    HDU 1102 Constructing Roads
    HDU 1285 确定比赛名次。
    最小生成树 HDU 各种畅通工程的题,prim和kru的模板题
    HDU Jungle Roads 1301 最小生成树、
    并查集小结(转)
    HDU hdu 2094 产生冠军 拓扑排序 判定环
    模运算(转)
    拓扑排序(主要是确定环和加法) HDU 2647 Reward
    HDU 1372 Knight Moves 简单BFS
    用计算机模型浅析人与人之间沟通方式 (一)如何谈话
  • 原文地址:https://www.cnblogs.com/zfsky/p/5965695.html
Copyright © 2011-2022 走看看