ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java 日期类 Date

2022-02-23 23:31:53  阅读:226  来源: 互联网

标签:Java int System println 日期 cal Date Calendar out


目录

构造函数:

常用方法:

使用DateFormat格式化日期

使用SimpleDateFormat格式化日期

 日期与日期格式字符串的相互转化:

Calendar类

Calendar与Date都是表示日期的工具类,他们之间可以相互转换。

Calendar类提供的常用方法:


构造函数:

Date(int year,int month ,int day)已经过时

常用Date(long date):从标准时间起指定时间的毫秒数

标准时间:1970-1-1-8:00

常用方法:

Date日期和毫秒的相互转换:

1.日期获取毫秒值

Date date3 = new Date();

long time = date3.getTime();

2.把一个毫秒值转换为Date

  1. 构造方法
  2. setTime(long time)方法

使用DateFormat格式化日期

DateFormat是一个抽象类,它也提供了几个工厂方法用于获取DateFormat对象。返回的都是DateFormat对象的子类实例,是同一个类型的实例。

  • getDateInstance():返回一个日期格式器,只对日期进行格式化。
  • getTimeInstance():返回一个时间格式器,只对时间进行格式化。
  • getDateTimeInstance():返回一个日期、时间格式器,既对时间又对日期进行格式化。
  • getInstance():返回一个默认的系统相关的日期、时间格式器。

举例:

public static void main(String[] args)  throws Exception{

DateFormat format = DateFormat.getInstance();

System.out.println(format.getClass());

format = DateFormat.getDateInstance();

System.out.println(format.getClass());

format = DateFormat.getTimeInstance();

System.out.println(format.getClass());

}

输出:

 

虽然返回的都是同一个对象类型的实例,但是根据不同的工厂方法,返回的对象在格式化时间对象时,处理不同部分的信息。

使用SimpleDateFormat格式化日期

SimpleDateFormat是DateFormat的子类,是一种更简单的日期格式,以我们指定的格式对日期进行格式化。

举例:

 public static void main(String[] args) throws Exception{
            Date date = new Date();
            SimpleDateFormat simple = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
            System.out.println(simple.format(date));
        simple = new SimpleDateFormat("yyyy/MM/dd");
        System.out.println(simple.format(date));
    }

输出:

 日期与日期格式字符串的相互转化:

 字符串转换成日期:parse()

日期转字符串:format()

public static void main(String[] args)  throws Exception{
		// Date -- String
		// 创建日期对象
		Date d = new Date();
		// 给定模式
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		String s = sdf.format(d);
		System.out.println(s);
		
		//String -- Date
		String str = "2008-12-13 12:12:12"; 
		//在把一个字符串解析为日期的时候,请注意格式必须和给定的字符串格式匹配
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date dd = sdf2.parse(str);
		System.out.println(dd);
	}

 

注意:yyyy 、MM、dd、HH、mm、ss 均严格区分大小写。否则会带来不可预知的问题。

具体用法如下:

字母    含义                            示例

y                

Year1996;96             哪一年
M Month in year07       一年中的哪一月
m  Minute in hour    30       一个小时中的第几分钟
wWeek in year    27       一年中的第几个星期
WWeek in month2         一个月中的第几个星期
DDay in year189     一年中的第几天
d Day in month10       一个月中的第几天
HHour in day (0-23)

0         一天中的第几个小时(24小时制)

hHour in am/pm (1-12)         

12        一天中上午、下午的第几个小时(12小时制)

SMillisecond                 

978                 毫秒数

sSecond in minute

55                  一分钟的第几秒

Calendar类

Date类的问题:

  1. 无法实现国际化。
  2. 不同属性使用了前后矛盾的偏移量,比如月份和小时都是从0开始,月份中的天数则是从1开始的,年又是从1900开始。

Calendar是一个抽象类,用于表示日历。因为Date类在设计上存在一些缺陷,所以Java提供Calendar类来更好的处理日期和时间。

Calendar类不能直接创建,可以通过类方法来创建一个Calendar的子类,Java本身提供了GregorianCalendar子类,通过getInstance()方法返回默认时区和语言环境获得一个日历。返回的实例就是Java提供的默认子类

public static void main(String[] args)  throws Exception{
		Calendar cal = Calendar.getInstance();
		System.out.println(cal.getClass());  //class java.util.GregorianCalendar
	}

Calendar与Date都是表示日期的工具类,他们之间可以相互转换。

举例:

public static void main(String[] args)  throws Exception{

Calendar cal = Calendar.getInstance();

Date date = cal.getTime();

System.out.println(date);

Calendar cale = Calendar.getInstance();

cale.setTime(date);

}

Calendar类提供的常用方法:

  • void add(int field,int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • int get(int field):返回指定日历字段的值。
  • int getActualMaximum(int field):返回指定日历字段的可能拥有的最大值。
  • int getActualMinimum(int field):返回指定日历字段的可能拥有的最小值。
  • void roll(int field,int amout):与add方法相似,区别在于超过该字段的最大范围时,也不会向上一个字段进位。
  • void set(int field,int value):将给定的日历字段设置为给定值。
  • void set(int year,int month,int date):设置Calendar对象的年、月、日3个字段值。
  • void set(int year,int month,int date,int hourOfDay,int minute,int second):设置Calendar对象的年、月、日、时、分、秒6个字段的值。
    public static void main(String[] args) throws Exception {
    		Calendar cal = Calendar.getInstance();
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    		System.out.println("==================================");
    		System.out.println(sdf.format(cal.getTime()));
    		System.out.println(cal.get(Calendar.YEAR));
    		cal.add(Calendar.MONTH, 12);
    		System.out.println(cal.get(Calendar.YEAR));
    		System.out.println("=========================");
    		cal = Calendar.getInstance();
    		System.out.println(cal.get(Calendar.YEAR));
    		cal.roll(Calendar.MONTH, 12);
    		System.out.println(cal.get(Calendar.YEAR));
    		System.out.println("==================================");
    		System.out.println(cal.getActualMaximum(Calendar.MONTH)); // 11
    		System.out.println(cal.getActualMinimum(Calendar.MONTH)); // 0
    		System.out.println("==================================");
    		System.out.println(cal.get(Calendar.MONTH));
    		System.out.println(cal.get(Calendar.DAY_OF_MONTH));
    		System.out.println(cal.get(Calendar.DAY_OF_WEEK));
    		System.out.println(cal.get(Calendar.WEEK_OF_MONTH));
    		System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
    
    		System.out.println("==================================");
    		cal.set(2018, 0, 1, 1, 1);
    		System.out.println(sdf.format(cal.getTime()));
    
    		/*
    		 * JANUARY = 0, FEBRUARY = 1, MARCH = 2, APRIL = 3, MAY = 4, JUNE = 5,
    		 * JULY = 6, AUGUST = 7, SEPTEMBER = 8, OCTOBER = 9, NOVEMBER = 10,
    		 * DECEMBER = 11, UNDECIMBER = 12
    		 */
    		System.out.println(cal.get(Calendar.MONTH));
    		/* 从1开始 */
    		System.out.println(cal.get(Calendar.DAY_OF_MONTH));
    		/*
    		 * SUNDAY = 1; 星期天 MONDAY = 2; 星期一 TUESDAY = 3; WEDNESDAY = 4; THURSDAY
    		 * = 5; FRIDAY = 6; SATURDAY = 7; JANUARY = 0; 星期六
    		 */
    		System.out.println(cal.get(Calendar.DAY_OF_WEEK));
    		/* 从1开始 */
    		System.out.println(cal.get(Calendar.WEEK_OF_MONTH));
    		/* 从1开始 */
    		System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
    	}

     

标签:Java,int,System,println,日期,cal,Date,Calendar,out
来源: https://blog.csdn.net/Carol__a/article/details/123100960

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有