廖雪峰Java7处理日期和时间-2Data和Calendar-1Date
计算机中如何存储和表示日期和时间
Epoch Time:从1970年1月1日零点(格林威治时区/GMT+00:00)到现在经历的秒数,也叫timestamp, 例如:
- 秒级:
* 北京 2016-11-20 08:15:01=1479600901
* 伦敦 2016-11-20 00:15:01=1479600901 - 毫秒数:
* 北京 2016-11-20 08:15:01.123=1479600901123 - 浮点数:
* 北京 2016-11-20 08:15:01.123=1479600901.123
Epoch Time存储是是一个整数,毫秒数使用long类型表示
- long t = 1479600901123L;
Java中表示日期和时间的方式
- 2016-11-20 8:15:01 GMT+8:00
- 11/19/2016 19:15:01 America/New_York
1.Java处理日期和时间的API
Java有2套处理日期和时间的API,
- java.util//旧的API存在很多问题,所以Java8引入了新的API
* Data
* Calendar - java.time(JDK>=1.8)
* LocalData
* LocalTime
* ZonedDataTime
* Instant
2.java.util.Data获取当前时间
- new Data() 获取当前时间
- long getTime() 获取时间戳的整数值
- toString() 按照默认模式,将当前时间转换为字符串
- toGMTString() 通过默认的格式打印GMT时间
- toLocaleString() 通过默认格式打印Locale时间
- SimpleDataFormate yyyy:年份 MM:月份
* format 将时间按照指定时间格式生成字符串
* parse 将字符串转化为时间
3.获取当前时间
public static void main(String[] args) throws ParseException {
//获取系统当前时间戳,毫秒级
System.out.println("获取系统当前时间戳:"+System.currentTimeMillis());
//使用Date获取当前时间
Date now = new Date();
System.out.println("使用Date获取当前时间:"+now);
//从Date对象获取long类型
long t = now.getTime();
System.out.println("从Date对象获取long类型:"+t);
//把long类型转化为时间
System.out.println("把long类型转化为时间:"+new Date(t));
}

4.从Date对象获取字符串
public static void main(String[] args) throws ParseException {
//使用Date获取当前时间
Date now = new Date();
System.out.println("使用Date获取当前时间:"+now);
System.out.println("按照默认格式将时间转换为字符串:"+now.toString());
System.out.println("已弃用-按照GMT格式将时间转换为字符串:"+now.toGMTString());
System.out.println("已弃用-按照当地格式将时间转为字符串:"+now.toLocaleString());
}

5.将Date对象转换为格式化字符串
public static void main(String[] args) throws ParseException {
Date now = new Date();
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
System.out.println(new SimpleDateFormat("MM-dd-yyyy HH:mm:ss").format(now));
System.out.println("中国标准时区:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z").format(now));
System.out.println("GMT时区:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z").format(now));
}

[日期时间字符串格式](https://docs.oracle.com/javase/9/docs/api/java/text/SimpleDateFormat.html)

6.把字符串解析为Date对象
public static void main(String[] args) throws ParseException {
String s1 = "2016-11-20 12:15:59";
Date date1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(s1);
System.out.println("使用默认的Locale.CHINA解析:"+date1);
String s2 = "NOv/20/2016 12:15:59";
Date date2 = new SimpleDateFormat("MMM/dd/yyyy HH:mm:ss",Locale.US).parse(s2);
System.out.println("使用指定的Locale.US解析:"+date2);
String s3 = "2016-11-20T12:15:59";
Date date3 = new SimpleDateFormat("hhhh-MM-dd'T'HH:mm:ss").parse(s3);
System.out.println("使用ISO8601标准格式解析:"+date3);
}

7.java.util.Date的问题:
- 不能进行时区的换算
- 很难进行日期和时间的加减
- 不能计算两个日期相差多少天
- 很难计算某个月第一个星期一是几号
8.总结
- 理解epoch time
- Java有两套日期和时间的API:
* java.util.Date/Calendar
* java.time - 正确使用java.util.Date
* Date和long的转换
* Date和String的转换:SimpleDateFormat
廖雪峰Java7处理日期和时间-2Data和Calendar-1Date的更多相关文章
- 廖雪峰Java7处理日期和时间-2Data和Calendar-2Calendar
Calendar类 历史上有许多纪年方法,其差异太大了.为了统一计时,通常采用格里高利日历. 1.创建Calendar对象 Calenda类是一个抽象类,所以不能使用构造器来创建Calendar对象. ...
- 廖雪峰Java7处理日期和时间-4最佳实践-最佳实践
jdk提供了2套新旧的API来处理日期和时间. java.util * Date * Calendar java.time(JDK>=1.8) * Localdate * LocalTime * ...
- 廖雪峰Java7处理日期和时间-3java.time的API-2ZonedDateTime
ZonedDatetime = LocalDateTime + ZoneId ZonedDateTime:带时区的日期和时间 ZoneId:新的API定义的时区对象(取代几句的java.util.Ti ...
- 廖雪峰Java7处理日期和时间-3java.time的API-1LocalDateTime
1.java.time提供了新的日期和时间API: LocalDate/LocalTime/LocalDateTime ZoneDateTime/ZoneId Instant Formatter 新A ...
- 廖雪峰Java7处理日期和时间-1概念-1日期和时间
1.日期 日期是指某一天,如2016-11-20,2018-1-1 2.时间有2种: 不带日期的时间:14:23:54 带日期的时间:2017-1-1 20:21:23,唯一确定某个时刻 3.时区 时 ...
- java日期和时间Date、Calendar、SimpleDateFormat
1 时间和日期 1.1 日期类Date和格式化SimpleDateFormat 日期使用过程中需要将日期Date对象转化为字符串,或者将字符串形式的日期转化为日期Date对象.可 ...
- Java 中的日期与时间
Java 日期时间 标签 : Java基础 Date java.util.Date对象表示一个精确到毫秒的瞬间; 但由于Date从JDK1.0起就开始存在了,历史悠久,而且功能强大(既包含日期,也包含 ...
- 廖雪峰Python电子书总结
函数 1.注意:函数的默认参数必须指向不可变对象 未修改前: def add_end(L=[]): L.append('END') return L 存在的问题:如果连续调用多次,会出现多个 'END ...
- git常用命令总结--廖雪峰老师Git教程命令总结
学习了廖雪峰老师的Git教程之后的命令总结,重点关于git和远程仓库的东西. 如果没有学过,这是传送门 下面这个图很重要 一.git初始化本地仓库和配置 echo "想输入到文件的内容,一般 ...
随机推荐
- [luogu P2234] [HNOI2002]营业额统计
[luogu P2234] [HNOI2002]营业额统计 题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司 ...
- css预处理器--sass学习($变量名)
sass有两种形式1.scss 2.sass 一:代码的基本用法 1.变量 如果变量需要镶嵌在字符串之中,就必须需要写在#{}之中. $side : left; .rounded { border- ...
- excel表格中,怎么根据一列重复的数据求对应另一列总和
如下: 求出姓名对应分数总和对应 : 首先复制一份Sheet2 对Sheet1进行操作选中A列姓名 数据->删除重复项->以前选中区域排序->删除重复项 然后删除对应成绩项选中张三对 ...
- 树形结构表的存储【转自:http://www.cnblogs.com/huangfox/archive/2012/04/11/2442408.html】
在数据库中存储树形结构的数据,这是一个非常普遍的需求,典型的比如论坛系统的版块关系.在传统的关系型数据库中,就已经产生了各种解决方案. 此文以存储树形结构数据为需求,分别描述了利用关系型数据库和文档型 ...
- unity5.x中的关节和布料
关节 布料 关节 铰链关节(Hinge Joint):将两个物体以链条的形式绑在一起,当力量过大超过链条的固定力矩时,两个物体就会产生相互的拉力. 固定关节(Fixed Joint): ...
- Mad Libs游戏 & 华氏温度与摄氏温度转换
Mad Libs游戏 animal1 = input("请输入一种动物") animal2 = input("请输入一种动物") movement1 = inp ...
- Android开发 ---xml构建选项菜单、上下文菜单(长按显示菜单)、发通知、发送下载通知
1.activity_main.xml 描述: 定义了一个TextView和三个按钮 <?xml version="1.0" encoding="utf-8&quo ...
- react 调用webIm
记录下遇到的问题,之前引用腾讯云的webim,一直出错,现在改好了, 引用了, 以上是在public下的index.html引用, 但是在子模块console.log(webim);会报这个错 解决也 ...
- 一般xcode报错
下面这图报找不到FMDtabaseQueue,其实是把文件拖入xcode的时候xcode没有把.m文件添加进工程路径 解决办法:build phases-> compile sources &q ...
- FreeSWITCH添加中文语音
1.准备中文语音包 可以到freeswitch官网下载,也可以自己录制 2.中文资源的安装路径: 英文资源的路径为conf/sounds/en/us/callie/... 类似的设置中文资源的路径 ...