java如何调用计算机时间,廖雪峰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));

}

1601485b3454b3b92f15bc91d789e6eb.png

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());

}

a322f3ee147e3f60e4180c808508761b.png

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));

}

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

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);

}

eb8458363257b9016c7b1d54bc93f178.png

7.java.util.Date的问题:

不能进行时区的换算

很难进行日期和时间的加减

不能计算两个日期相差多少天

很难计算某个月第一个星期一是几号

8.总结

理解epoch time

Java有两套日期和时间的API: * java.util.Date/Calendar * java.time

正确使用java.util.Date * Date和long的转换 * Date和String的转换:SimpleDateFormat

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值