java 日期类 周_Java日期时间类

日期时间类有三种:

一、java.util.Date:一般用于声明日期时间类型的变量。

二、java.sql.Date:一般用于数据库日期时间的映射。

三、java.util.Calendar:一般用于日期时间的计算。

日期时间与字符串的转换:

java.text.SimpleDateFormat

1、java.util.Date类:

此处的Date类是java.util包下的

Date的是继承父类Object

2d9729bde74533faa588d94b1a5ad919.png

Java原本提供了Data和Calendar用于处理日期、时间的类,包括创建日期、时间对象,获取系统当前日期、时间等操作。但Date不仅无法实现国际化,而且它对不同属性也使用了前后矛盾的偏移量,比如月份与小时都是从0开始的,月份中的天则是从1开始的,年又是从1900开始的,而java.util.Calendar则显得过于复杂。

Date对象既包含日期,也包含时间。Date类送JDK1.0开始就存在了,但因为它历史悠久,所以它的大部分构造器、方法都已经过时了,不再推荐使用了。

Date类提供了6个构造器,其中4个已经Deprecated(Java不再推荐使用,使用不再推荐的构造器编译器会提出警告信息,并导致程序性能、安全性等方面的问题),剩下的两个构造器如下

①Date():生成一个代表当前日期时间的Date对象。该构造器在底层调用了System.currentTimeMillis()获得long整数作为日期参数。

②Date(long date):根据指定的long型整数来生成一个Date对象。该构造器的参数表示创建的Date对象和GMT 1970年1月1日00:00:00之间的时间差,以毫秒作为计时单位。

Date对象的大部分方法也已经Deprecated了,剩下为数不多的几个方法。

①boolean after(Date when):测试该日期是否在指定日期when之后。

②boolean before(Date when):测试该日期是否在指定日期when之前。

③long getTime():返回该时间对于的long型整数,即从GMT 1970-01-01 00:00:00之间的时间差,以毫秒作为单位。

④void setTime(long time):设置该Date对象的事件。

Date类对象类的创建:

在java.util.Date中“年”是从1900年开始的一个int值,“月”是0-11的int值,“日”是1-31的int值,“时”是0-23的int值,“分”是0-59的int值,“秒”是0-61的int值,有闰秒的说法。

public static void main(String args[]){

//实例化一个java.util.Date类

Date date = new Date();

System.out.println(date);//输出的结果Tue Mar 12 17:18:00 CST 2019,获取的是当前的时间

System.out.println(date.toLocaleString);//2019-3-12 17:18:00 获取的是本地系统的时间

System.out.println(date.toString); //Tue Mar 12 17:18:00 CST 2019

}

2、java.sql.Date

该例实例用于与数据库中有关时间日期的操作,java.sql.Date是java.util.Date的子类。

fc8722bd8153a3e87578bd5c1e4a4344.png

示例:将java.util.Date转换成java.sql.Date

public static voidmain(String args[]){

Date date= newDate();

java.sql.Date date1= newjava.sql.Date(date.getTime());

System.out.println(date1);//输出2019-03-12

}

3、java.util.Calendar

API的定义

f2825c449ffe069c83d5c9794a120227.png

Calendar类是一个抽象类,由于Calendar类是抽象类,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。只受保护的,能在继承链中可以使用,该类有一个直接的子类GregorianCalendar。

示例:

public static void main(String args[]){

//getInstance方法返回Calendar对象,其日历字段已由当前日期和时间初始化

Calendar c =Calendar.getInstance();//获取年

int year =c.get(Calendar.YEAR);//获取月

int month =c.get(Calendar.MONTH );//获取日

int day =c.get(Calendar.DAY_OF_MONTH);//输出

System.out.println(year + "-" + (month + 1) + "-" +day);// 2019-3-12

//add添加

c.add(Calendar.YEAR,1);

System.out.println(c.get(Calendar.YEAR);//2020

}

字符与日期类型的转换

DateFormat类基本使用

日期和时间模式

c5c35f3fe34ee1ed72931ec74e68b83c.png

日期时间的显示在用户界面上是比较重要的,字符串与日期格式之间转换—日期的格式化:java.text.SimpleDateFormat

2e042b5e95de1e28f6f30b329a5d7be0.png

常用构造方法:

SimpleDateFormat() //用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat

SimpleDateFormat(String pattern) //用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat

来几个练习就理解了:

1、指定年、月、日,返回一个日期类型的变量:

1 public classDateDemo {2

3 public static void main(String[] args) throwsParseException {4 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日);

5 String str = "2020年3月12日“

6 Date date =sdf.parse(str);7 system.out.println(date); //输出Thu Mar 12 00:00:00 CST 2020

}

2、用户输入一个字符串,转化成日期类型

public static void main(String[] args) throwsParseException {//System.out.print("请输入一个日期格式为yyyy年MM月dd日的日期:

Scanner scan = new Scanner(System.in);//用户输入

String choice = scan.nextLine();//接收用户输入

SimpleDateFormat format = newSimpleDateFormat(yyyy年MM月dd日);

Date date=format.parse(choice);//parse()从给定字符串的开始解析文本,以生成一个日期

System.out.println(date);

结果如下:

9bdb7a6c8763c7def7988e2882af8fab.png

3、计算今天是这一年中的第几天,这一周是这一年中的第几周

public static voidmain(String[] args) {//计算今天是这一年中的第几天,这一周是这一年中的第几周

Date date = newDate();

Calendar cal= Calendar.getInstance();//返回一个Calendar对象

cal.setTime(date);//设置当前时间的值

int a =cal.get(Calendar.DAY_OF_WEEK);int b =cal.get(Calendar.DAY_OF_YEAR);int c =cal.get(Calendar.WEEK_OF_YEAR);

System.out.println("今天是这一年中的第" + b + "天"

+ "-今天是这一年中的第" + c + "周"

+ "-今天是这一周中的第" + a + "天");

}

结果是:今天是这一年中的第71天-今天是这一年中的第11周-今天是这一周中的第3天

注意:一周中的某一天是从星期天开始的,顺序是星期天、星期一、星期二、星期三、星期四、星期五、星期六

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值