JavaAPI-日期时间

日期时间API

java.util.Date

  • Date的每一个实例用于表示一个时间,内部维护一个long值,该值记录的是自1970年元旦到当前时间
  • Date表示的时间之间所经过的毫秒。
  • 由于Date存在时区和千年虫问题,因此操作时间的一系列API方法都“过时”了,不再建议使用
    因此我们现在使用的Date仅作为表示时间使用。

常用方法:

  • long getTime( )
    返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

  • void setTime(long time)
    用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。

  • String toString( )
    把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy
    Thu Jan 01 08:00:00 CST 1970
    其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
       

java.text.SimpleDateFormat

  • 使用 SimpleDateFormat 格式化日期
    yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。
    注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。
    还有其他的自己参考:
    E 星期几
    a A.M./P.M. 标记

  • 可以按照指定的日期格式将String与Date之间相互转换

    示例:

Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 格式化日期
String str = sdf.format(now);
System.out.println(str);

方法:

  • String format(Date date)
    将给定的Date转换为String
    (见上示例)

  • Date parse(String str)
    将给定的字符串转按照指定的格式解析成日期时间

    示例:

// 将一个String 按照指定的日期格式解析为Date
String str = "2019-12-20 10:45:08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);
System.out.println(date);

   

java.util.Calendar

  • 日历类->格里高里历,即通用的阳历

  • Calendar是常用的的操作时间的API,本身是一个抽象类,定义了操作时间的相关方法。
    常用实现类为 java.util.GregorianCalendar ,即阳历

  • 获取Calendar实例可以使用Calendar的静态方法 getInstance,大部分地区返回的都是阳历实现。

示例:

// 创建一个代表系统当前日期的Calendar对象
Calendar c = Calendar.getInstance();//默认是当前日期

常用方法

  • Date getTime()
    将当前Calendar表示的日期以Date实例返回

  • void setTime(Date date)
    用给定的日期设置Calendar的当前时间

  • int get(int field)
    获取指定时间分量所对应的值
    时间分量是一个int值,Calendar中定义了大量的常量进行了表示
    时间分量:
    Calendar.YEAR 年份
    Calendar.MONTH 月份(是从0开始表示的)
    Calendar.DATE 日期
    Calendar.DAY_OF_MONTH 日期,和上面的字段意义完全相同
    Calendar.DAY_OF_YEAR 年中的天
    Calendar.HOUR 12小时制的小时
    Calendar.HOUR_OF_DAY 24小时制的小时
    Calendar.MINUTE 分钟
    Calendar.SECOND 秒
    Calendar.DAY_OF_WEEK 星期几 注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推

示例:

Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
// 月从0开始,0表示1月
int month = calendar.get(Calendar.MONTH)+1;
int date = calendar.get(Calendar.DATE);
System.out.println(year+"-"+month+"-"+date); // 2019-12-20
// 今天是星期几?
int dow = calendar.get(Calendar.DAY_OF_WEEK)-1;
String[] data = {"日","一","二","三","四","五","六"};
System.out.println("今天是周"+data[dow]);
  • int getActualMaximum(int field)
    返回当前日期,给定字段的最大值
    示例:
int d = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);
System.out.println(d); // 365
  • int getActualMinimum(int field)
    返回当前日期,给定字段的最小值 //1

  • void set(int field, int value)
    用给定的值设置时间字段(时间分量)
    void set(int year, int month, int date, int hour, int minute, int second)
    设置年、月、日、小时、分钟、秒的值。(可随意设置,单独调整一个或多个也可)

    示例:

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());
// 调整年
calendar.set(Calendar.YEAR, 2008);
// 调整月
calendar.set(Calendar.MONTH, Calendar.AUGUST);
// 调整天
calendar.set(Calendar.DATE, 8);
System.out.println(calendar.getTime());
  • void add(int field, int amount)
    根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。
    (对指定的时间分量加上给定的值,若给定的值是负数,则是减去)

  • boolean isLeapYear(int year)
    确定给定的年份是否为闰年

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值