Java日期时间类
日期时间类有三种:
一、java.util.Date:一般用于声明日期时间类型的变量。
二、java.sql.Date:一般用于数据库日期时间的映射。
三、java.util.Calendar:一般用于日期时间的计算。
日期时间与字符串的转换:
java.text.SimpleDateFormat
1、java.util.Date类:
此处的Date类是java.util包下的
Date的是继承父类Object

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的子类。

示例:将java.util.Date转换成java.sql.Date
public static void main(String args[]){
Date date = new Date();
java.sql.Date date1 = new java.sql.Date(date.getTime());
System.out.println(date1);//输出2019-03-12
}
3、java.util.Calendar
API的定义

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类基本使用
日期和时间模式

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

常用构造方法:
SimpleDateFormat() //用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
SimpleDateFormat(String pattern) //用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat
来几个练习就理解了:
1、指定年、月、日,返回一个日期类型的变量:
public class DateDemo {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日);
String str = "2020年3月12日“
Date date = sdf.parse(str);
system.out.println(date); //输出Thu Mar 12 00:00:00 CST 2020
}
2、用户输入一个字符串,转化成日期类型
public static void main(String[] args) throws ParseException {
//System.out.print("请输入一个日期格式为yyyy年MM月dd日的日期:
Scanner scan = new Scanner(System.in);//用户输入
String choice = scan.nextLine();//接收用户输入
SimpleDateFormat format = new SimpleDateFormat(yyyy年MM月dd日);
Date date = format.parse(choice);//parse()从给定字符串的开始解析文本,以生成一个日期
System.out.println(date);
结果如下:

3、计算今天是这一年中的第几天,这一周是这一年中的第几周
public static void main(String[] args) {
//计算今天是这一年中的第几天,这一周是这一年中的第几周
Date date = new Date();
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天
注意:一周中的某一天是从星期天开始的,顺序是星期天、星期一、星期二、星期三、星期四、星期五、星期六
Java日期时间类的更多相关文章
- Java日期时间API系列3-----Jdk7及以前的日期时间类的不方便使用问题
使用Java日期时间类,每个人都很熟悉每个项目中必不可少的工具类就是dateutil,包含各种日期计算,格式化等处理,而且常常会遇到找不到可用的处理方法,需要自己新增方法,处理过程很复杂. 1.Dat ...
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- Java日期时间实用工具类
Java日期时间实用工具类 1.Date (java.util.Date) Date(); 以当前时间构造一个Date对象 Date(long); 构造函数 ...
- Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类
因为Jdk7及以前的日期时间类的不方便使用问题和线程安全问题等问题,2005年,Stephen Colebourne创建了Joda-Time库,作为替代的日期和时间API.Stephen向JCP提交了 ...
- Java 之 JDK1.8之前日期时间类
一.JDK1.8之前日期时间类 二. java.lang.System类 System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1 ...
- Java日期时间API系列19-----Jdk8中java.time包中的新的日期时间API类,ZonedDateTime与ZoneId和LocalDateTime的关系,ZonedDateTime格式化和时区转换等。
通过Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中时间范围示意图:可以很清晰的看出ZonedDateTime相当于LocalDateTime+ZoneI ...
- Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析
目录 0.前言 1.TemporalAccessor源码 2.Temporal源码 3.TemporalAdjuster源码 4.ChronoLocalDate源码 5.LocalDate源码 6.总 ...
- Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate
通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用ja ...
- Java日期时间API系列12-----Jdk8中java.time包中的新的日期时间API类,日期格式化,常用日期格式大全
通过Java日期时间API系列10-----Jdk8中java.time包中的新的日期时间API类的DateTimeFormatter, 可以看出java8的DateTimeFormatter完美解决 ...
随机推荐
- 各种蕴含算法思想的DP - 3
内容中包含 base64string 图片造成字符过多,拒绝显示
- JavaScript中的两种全局对象
这里总结的东西特别适合先学习c/c++, Java这类标准语言再学JS的童鞋们看,因为JS在程序执行之前就会初始化一个全局对象,这个全局对象到底是什么是跟JS程序运行环境有关的. 根据JavaScri ...
- python的类的继承-接口继承-归一化设计
1.先在子类本身找,如果子类没有,会去父类找 class Dad: '这个是爸爸类' money=10#Dad类的数据属性 def __init__(self,name): print("爸 ...
- Swift学习笔记1
1.Swift 的String类型是值类型. 如果您创建了一个新的字符串,那么当其进行常量.变量赋值操作,或在函数/方法中传递时,会进行值拷贝. 任何情况下,都会对已有字符串值创建新副本,并对该新副本 ...
- Linux ------清除内存中的cache
首先以Centos6.4的来说,Centos7有些区别 一.buffer/cache/swap的介绍 #cat /etc/redhat-release #查看系统版本 CentOS release ...
- SQL语句(十)查询结果排序
查询结果排序 使用ORDER BY 子句 SELECT <列名列表> FROM <表名> [WHERE 条件] ORDER BY <字段名1> [ASC|DESC] ...
- MongoDB探索之路(三)——索引
1.索引介绍 2.创建语句 1)基础索引 在字段age 上创建索引,1(升序);-1(降序):db.users.ensureIndex({age:1}) _id 是创建表的时候自动创建的索引,此索引是 ...
- js 判断日期大小、是否在时间范围内等处理
var beginval="2015-09-01";//这个时间可以是日期控件选择的,也可以是其他的任何日期时间 var endval="2015-09-01" ...
- Jenkins的安装及使用(一)
操作环境:Windows7 一.环境准备 1 安装JDK 本文采用jdk-8u111-windows-x64.exe: 安装完成后配置环境变量. 2 配置tomcat 本文采用tomcat8,免安装版 ...
- 第八集:魔法阵 NTT求循环卷积
题目来源:http://www.fjutacm.com/Problem.jsp?pid=3283 题意:给两串长度为n的数组a和b,视为环,a和b可以在任意位置开始互相匹配得到这个函数的值,求这个函数 ...