Java中的日期表示类
一、概述
Java中的日期类设计的比较失败,刚开始使用Date来计算时间,后来大部分Date类的方法都过时了;想用Calendar类代替Date类,然而Calendar类也是不尽如人意。下面简单介绍下Java中的日期转换方法。
1、Date类
Date类的构造方法有两个,public Date()和public Date(long date).可以用来表示当前日期,或者将长整型数据表示成时间。第一个勉强可以用下,用来表示当前时间,第二个试问谁能记得住那么一大串的时间值呢?看下示例吧:
//参数表示1970-01-01 00:00:00到指定时间的毫秒数
Date date1 = new Date(14686531L);
System.out.println(date1);
Date date2= new Date();
System.out.println(date2);
输出的日期为:
Thu Jan 01 12:04:46 GMT+08:00 1970
Sat Apr 20 08:43:34 GMT+08:00 2019
其中第一个参数表示:1970-01-01 00:00:00到指定时间的毫秒数
第二个表示:当前时间。
使用Date将字符串转换为日期格式:Date的年月日是在1900-01的基础上来累加。因此,要现将字符串中的年月日切分出来,然后再使用Date表示。
示例如下:
//2. 出生日期
//2000-12-16->转化为date对象
//在1900-01的基础上来累加
String str = "2000-12-16";
//现将年月日切分出来
String[] arr = str.split("-");
int year = Integer.parseInt(arr[0]) - 1900;
int month = Integer.parseInt(arr[1]) - 1;
int day = Integer.parseInt(arr[2]);
//Date date = new Date(2000,12,16);
//如果某个类、方法、属性出现了删除线,并且有提示需要进行警告压制
//压制内容deprecation,表示这个类、方法、属性已过时
//已过时:指当前代码依然可以用,但是不推荐使用,在后续迭代版本中可能会被抛弃
@SuppressWarnings("deprecation")
Date date = new Date(year, month, day);
System.out.println(date);
二、使用DateFormat类的子类(SimpleDateFormat类)表示
因为使用Date类与字符串时间相互转化十分困难,因此,考虑Date类的其他子类。DateFormat是日期/时间格式化子类的抽象类,它与以语言无关的方式格式化并解析日期或时间,是抽象类,所以使用其子类SimpleDateFormat实现日期和字符串的相互转换。
public static void main(String[] args) throws Exception {
// 2000-12-16
// 2000/12/16
// 2000.12.16
// 12/16/2000
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 将字符串转化为日期
Date date = sdf.parse("2000-12-16 16:52:39");
System.out.println(date);
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String str = sdf.format(date);
System.out.println(str);
}
三、Calendar类
java开发Calendar的目的是为了替换Date类,但是,该类设计的也是相当失败。仅有几个方法还值得使用一下。Calendar类是一个抽象类,不过提供了一个getInstance方法可以生成一个实例对象。通过该对象可以设置当前时间和获取日期。
public static void main(String[] args) {
// 创建Calendar对象
Calendar c = Calendar.getInstance();
System.out.println(c);
// 获取Hour属性的值
int hour = c.get(Calendar.HOUR);
System.out.println(hour);
c.set(Calendar.HOUR, 12);
// 获取Date对象的方法
Date d = c.getTime();
System.out.println(d);
}
Java中的日期表示类的更多相关文章
- Java中的日期处理类
在Java中可以使用Date类和Calendar类来处理日期 但是Date类很多方法都过时了,推荐使用Canlendar类来处理日期,并对日期的格式化做了介绍.下面的部分将会逐一介绍 Date类 Ja ...
- Java中的日期操作
在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...
- Java中Date和Calender类的使用方法
查看文章 Java中Date和Calender类的使用方法 2009-10-04 20:49 Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着 ...
- 填坑:Java 中的日期转换
我们之前讨论过时间,在Java 中有一些方法会出现横线?比如Date 过期方法. 参考文章:知识点:java一些方法会有横线?以Date 过期方法为例 Java中的日期和时间处理方法 Date类(官方 ...
- 第七节:详细讲解Java中的日期,java.util.date
前言 大家好,给大家带来详细讲解Java中的日期,java.util.date的概述,希望你们喜欢 类Date Java.lang.Object->java.util.Date public c ...
- Java中的日期和时间
Java中的日期和时间 Java在java.util包中提供了Date类,这个类封装了当前的日期和时间. Date类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date() 下面的构 ...
- Java中的日期操作 分类: B1_JAVA 2015-02-16 17:55 6014人阅读 评论(0) 收藏
在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...
- JAVA中封装JSONUtils工具类及使用
在JAVA中用json-lib-2.3-jdk15.jar包中提供了JSONObject和JSONArray基类,用于JSON的序列化和反序列化的操作.但是我们更习惯将其进一步封装,达到更好的重用. ...
- Delphi与Java中的日期互换
在最近做的一个项目中用到了Java和Delphi,发现它们不能正确读取对方的日期类型,如在Java中写入一个值为“2007-12-1”的日期值,通过Delphi读取却不是这个值了.通过查阅资料,发现两 ...
随机推荐
- MFC CListCtrl 显示bmp图片
m_ListCtrl.SetExtendedStyle(m_ListCtrl.GetExtendedStyle()| LVS_EX_SUBITEMIMAGES | LVS_EX_GRIDLINES); ...
- 使用input选择本地图片,并且实现预览功能
1.使用input标签选择本地图片文件 用一个盒子来存放预览的图片 2.JS实现预览 首先添加一个input change事件,再用到 URL.createObjectURL() 方法 用来创建 UR ...
- Mac的VIM中delete键失效的原因和解决方案
在Mac的键盘上实际是没有backspace这个键的.其实Mac的delete就是Windows的backspace,实现的都是向左删除的功能.Mac上如果要实现向右删除的功能需要使用⌘+delete ...
- python类的对象使用
class student(): def __init__(self,age,sex): self.age = age self.sex = sex #self._ ...
- WIN2008中部署网站后样式及JS加载不了(转载)
今天在一台刚刚装好的WIN2008上部署一个问题,一切按流程来:① 控制面板加IIS,把.NET 3.5打勾② 装.NET 4.0框架③ 装MSSQL2012④ IIS中部署网站⑤ 修改web.con ...
- SVG格式文件
SVG可以算是目前最最火热的图像文件格式了,它的英文全称为Scalable Vector Graphics,意思为可缩放的矢量图形.它是基于XML(Extensible Markup Language ...
- Codeforces 546 E:士兵的旅行 最大网络流
E. Soldier and Traveling time limit per test 1 second memory limit per test 256 megabytes input stan ...
- nodejs 编译时对项目进行配置
1.启动项目设置配置信息 2.读取项目配置文件 3.根据配置的文件读取自定义属性 4.根据相关属性配置其他差异 5.其他
- 17. Getting to the essence of things
17.Getting to the essence of things.抓住事情的本质 From today on, I think I should keep a diary. To the CCU ...
- 006-PHP检测是否为整数
<?php function checkInteger($Number) { if ($Number > 1) { /* 整数减1仍然是整数 */ return (checkInteger ...