常用类 时间常用类 时间常用类 时间

 

parse解析

 

Calendar

Calendarjava.util 包下面的一个抽象类,它为特定瞬间与一组诸如YEARMONTHDAY_OF_MONTHHOUR等日历字段之间的转换提供了一些方法,并未操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间值可用毫秒值来表示,它是距格林威治标准时间 1970 1 1日的 00:00:00:000的偏移量。

Java API 中说到,Calendar提供了一个类方法getInstance,以此获得此类型的一个通用对象,CalendargetInstance返回一个Calendar对象,其日历字段值已由当前日期和时间初始化。我们知道,抽象类是不能够被实例化的,那为什么会返回一个Calendar对象呢?Calendar还有一个直接子类GregorianCalendar,这个类是Calendar的实现类,那么其实getInstance方法返回的是Calendar的子类GregorianCalendar的对象。

Calendar对日历字段的操作有三种方法:

set() ,add() , roll()

set(f,value),这个方法的含义是把日历字段f设置成valueapi中说到,它设置了一个内部的成员变量,以指示f发生了改变,但是直到调用get()getTime()getTimeInMillis()add()  roll() 时才会重新计算日历的时间值(以毫秒为单位)。

add(f,delate),delate添加到f字段中,这相当于是set(f,get(f)+delate),当然,这样改动的话,可能日历的其他字段也会发生相应的改变,与 set() 不同,add() 强迫日历系统立即重新计算日历的毫秒数和所有字段。

 

roll(f,value)add(f,delate)的区别  :在完成调用后,更大的字段无变化

在项目中,经常看见的是通过Calendar对象得到当前的年月日。

下面通过一个小小的例子看看是如何得到年月日的

 

import java.util.Calendar;

public class CalendarTest {

    public static void main(String[] args) {

        Calendar cal= Calendar.getInstance();

        int day= cal.get(Calendar.DATE);

        int month=cal.get(Calendar.MONTH)+1;

        int year=cal.get(Calendar.YEAR);

        String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};

        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;

        if (w < 0)

            w = 0;

        System.out.println(    year+"年"+month+"月"+day+"号,"+weekDays[w]);

    }

}

 

此代码输出的是2017615号,星期四

  为什么month要加1才能得到当前月份呢?

是因为在格里高利历和罗马儒略历中一年中的第一个月是 JANUARY,它为 0;最后一个月取决于一年中的月份数。 简单来说,因为这个值的初始值是0,因此我们要用它来表示正确的月份时就需要加1。
为什么week要减1呢?
这是因为一个星期中的第一天是SunDay,从星期日到星期六,对应的数字分别是1,2,3,4,5,6,7,所以需要减1。

Calendar还有其他的一些方法,比如getTimeMillis(),返回Calendar的时间值,以毫秒计算
getTime(),返回一个此Calendar的时间值的Date对象,和new Date()的值是一样的。



Date

Date也是java.util包下的一个类,类 Date 表示特定的瞬间,精确到毫秒。
从 JDK 1.1 开始,应该使用
Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。


SimpleDateFormat

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。
SimpleDateFormat是DateFormat抽象类的实现类,DateFormat继承Format,
Format定义了编程接口,用于将语言环境敏感的对象格式化为 String(使用 format 方法)和将 String 重新解析为对象(使用 parseObject 方法)。 

 在格式化日期的时候,经常用到的构造方法是带一个String参数的

Public SimpleDateFormat(String pattern)
这个构造函数的意思是用给定的模式和默认的语言环境构的日期格式符号来格式化。

SimpleDateFormat中有format方法和pase方法,format方法是将Date对象转化为String字符串,parse是将字符串转化为Date对象。
下面通过代码来展示日期和字符串之间的转化。
假如我要将一个日期类型的时间格式转化成"yyyy-mm-dd"类型的字符串,需要用到format方法,
Date date=new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
sdf.format(date);
如果需要将"yyyy-mm-dd"String类型的日期转化成日期对象类型,就需要用到parse,

String str= "2017-6-17"
sdf.parse(str),
这样就可以得到一个日期类型。

附上项目当中的时间转换的util,里面包含了对时间的各种转化。

­­­­­­­

相关文章:

  • 2022-12-23
  • 2022-01-21
  • 2022-12-23
  • 2022-12-23
  • 2021-07-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-12
  • 2022-12-23
  • 2021-10-27
  • 2022-12-23
相关资源
相似解决方案