Date和Calendar日期的用法

Date类

System.currentTimeMillis() // 当前时间毫秒数

Date time = new Date();

time.getTime() // 当前毫秒值

time.setTime(100000000) // 根据毫秒值设置日期

java_util_Date和java_sql_Date的区别

java.util.Date类型的数据存到数据库需要转换成java.sql.Date

java.util.Date utilData = new java.util.Date();

java.sql.Date sqlData = new java.sql.Date(utilData.getTime());

SimpleDateFormat格式化时间

日期转字符串

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm.ss");

String formattedDate = simpleDateFormat.format(Calendar.getInstance().getTime()); // 2018/09/20 04:40.03

字符串转日期

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm.ss");

Date date = simpleDateFormat.parse("2018/09/20 04:40.03");

DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, Locale.CHINA);

Date date = dateFormat.parse("2018/09/20");

DateFormat的几个属性

SHORT 6/30/09 30/06/09

MEDIUM Jun 30, 2009 30 juin 2009

LONG June 30, 2009 30 juin 2009

FULL Tuesday, June 30, 2009 mardi 30 juin 2009

LocalDate

LocalDate用来获取系统默认时间

LocalDate lDate = LocalDate.now(); // 2018-09-20 不包含时间信息

LocalDate lDate = LocalDate.of(2018, 9, 10);

LocalDate lDate = LocalDate.parse("2018-09-11");

LocalDate lDate = LocalDate.now(ZoneId.systemDefault()); // 根据系统默认时区获取时间

简单日期操作

LocalDate.now() // 2018-09-20

LocalDate.now().minusDays(1) // 2018-09-19

LocalDate.now().plusDays(1); // 2018-09-21

LocalDate.now().withMonth(6) // 2018-06-20

LocalDateTime

LocalDateTime的参数含义

LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);

LocalDateTime的使用

LocalDateTime lDateTime = LocalDateTime.now(); // 2018-09-20T16:17:54.248780300

LocalDateTime lDateTime = LocalDateTime.of(2018, 9, 10, 10, 30);

LocalDateTime lDateTime = LocalDateTime.parse("2018-09-10T10:30");

LocalDateTime lDateTime = LocalDateTime.now(ZoneId.systemDefault());

Date和LocalDate的相互转化

Date转换成LocalDate

Date date = Date.from(Instant.now());

LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

LocalDate转换成Date

LocalDate lDate = LocalDate.now();

Date date = Date.from(lDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

Date和LocalDateTime的相互转化

Date转换成LocalDateTime

Date date = Date.from(Instant.now());

LocalDateTime localDateTime = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

LocalDateTime转换成Date

LocalDateTime lDateTime = LocalDateTime.now();

Date date = Date.from(lDateTime.atZone(ZoneId.systemDefault()).toInstant());

Calendar

用来获取日期的具体部分

Calendar cd = Calendar.getInstance();

int time = cd.get(Calendar.YEAR); // 获取年份

int time = cd.get(Calendar.MONTH) 1; // 月份从0开始,获取月份

int time = cd.get(Calendar.DAY_OF_MONTH); // 获取天

用来设置日期的具体部分

Calendar cd = Calendar.getInstance();

cd.set(Calendar.MONTH, 8); // 设置月份为9月

cd.set(1974, 6, 2, 8, 0, 0);

cd.add(Calendar.DAY_OF_MONTH, 2); // 时间偏移

Date time = cd.getTime(); // 将Calendar转化成Date类

GregorianCalendar

Calendar calendar = Calendar.getInstance();

Calendar calendar = new GregorianCalendar();

Calendar calendar = new GregorianCalendar(2016, Calendar.JANUARY, 1);

Calendar calendar = new GregorianCalendar(2016, Calendar.JANUARY, 1, 6, 55, 10);

calendar.add(Calendar.MONTH, -6); // 改变日期

calendar.roll(Calendar.MONTH, -1); // 改变日期的某一部分,其他字段不变

calendar.get(Calendar.AM_PM) // 获取某一日期部分

before_after_compareTo_equals

用来判断时间超前还是落后

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm.ss");

Date date = simpleDateFormat.parse("2018/09/20 04:40.03");

Date date1 = simpleDateFormat.parse("2018/09/21 04:40.03");

date.after(date1) // false

date.before(date1) // true

用来判断时间是否相等

date.compareTo(date1) // -1 返回的是日期对比的order,返回0表示相等、-1表示小、1表示大

date.equals(date1) // false

清空MILLISECOND

clear方法最好只用来清空MILLISECOND,其他的日期部分可能没作用

Calendar c = Calendar.getInstance();

System.out.println(c.getTimeInMillis()); // 1537442289490

c.set(Calendar.MILLISECOND, 22);

System.out.println(c.getTimeInMillis()); // 1537442289022

c.clear(Calendar.MILLISECOND);

System.out.println(c.getTimeInMillis()); // 1537442289000

isBefore_isAfter_compareTo_equals

LocalDate lDate1 = LocalDate.of(2018, 9, 20);

LocalDate lDate2 = LocalDate.of(2012, 9, 19);

lDate1.isAfter(lDate2); //true

lDate1.isBefore(lDate2); //false

lDate1.compareTo(lDate2); // -1 返回的是日期对比的order,返回0表示相等、-1表示小、1表示大

lDate1.equals(lDate2); // false

lDate1.isEqual(lDate2); // false

时区

TimeZone.getDefault().getDisplayName(); // 中国标准时间

Date date = new Date();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

sdf.setTimeZone(TimeZone.getTimeZone("China/Shang_Hai"));

System.out.println(sdf.format(date)); // 2018-09-20 11:44:22

sdf.setTimeZone(TimeZone.getTimeZone("Europe/London"));

System.out.println(sdf.format(date)); // 2018-09-20 12:44:22

时间差值

LocalDate d1 = LocalDate.of(2018, 9, 10).plusDays(1);

LocalDate d2 = LocalDate.of(2018, 9, 16).plusMonths(1);

long days = ChronoUnit.DAYS.between(d1, d2); // 35

Instant

Instant now = Instant.now(); // 2018-09-20T11:55:12.234452700Z

LocalTime

LocalTime localtime = LocalTime.now(); // 20:03:57.909365400

LocalTime time1 = LocalTime.of(1, 0, 0);

LocalTime time2 = LocalTime.of(3, 1, 10);

time1和time2差值

System.out.println( time1.until(time2, ChronoUnit.MINUTES) ); // 121

System.out.println( time1.until(time2, ChronoUnit.HOURS) ); // 2

System.out.println( time1.until(time2, ChronoUnit.SECONDS) ); // 7270

System.out.println( ChronoUnit.MINUTES.between(time1, time2) ); // 121

System.out.println( ChronoUnit.HOURS.between(time1, time2) ); // 2

System.out.println( ChronoUnit.SECONDS.between(time1, time2) ); // 7270

时区

ZoneId zone = ZoneId.of("Asia/Shanghai");

LocalTime time1 = LocalTime.now();

LocalTime time2 = LocalTime.now(zone);

LocalTime time3 = LocalTime.parse("20:10:30");

时间差

long timeDiff = Duration.between(time1, time3).toMinutes();

long timeDiff1 = ChronoUnit.MINUTES.between(time1, time3);

System.out.println(time1); // 20:13:38.239060900

System.out.println(time2); // 20:13:38.239060900

System.out.println(time3); // 20:10:30

System.out.println(timeDiff); // -3

System.out.println(timeDiff1); // -3

结语

本文章是java成神的系列文章之一

如果你想知道,但是本文没有的,请下方留言

我会第一时间总结出来并发布填充到本文

来源:http://www.icode9.com/content-1-29301.html

java 日期calendar_java成神之——date和calendar日期的用法相关推荐

  1. 字符串日期 转换成 需要的格式的 字符串日期(超强)

    字符串日期 转换成 需要的格式的 字符串日期 调用:dateformat(String pattern,Object date, boolean ifNullGetNow): 参数1:patern:你 ...

  2. java date 转换calendar_Java中日期格式(String、Date、Calendar)的相互转换

    1 packageday20190318;2 3 importjava.text.ParseException;4 importjava.text.SimpleDateFormat;5 importj ...

  3. java 数字翻译成英文_Java实现将数字日期翻译成英文单词的工具类实例

    本文实例讲述了Java实现将数字日期翻译成英文单词的工具类.分享给大家供大家参考,具体如下: package com.sunyard.etp.ag.util; import java.math.Big ...

  4. java stream optional_java成神之——Stream和Optional

    Stream流 基本使用 Stream myStream = Stream.of("a", "", "b", "c", ...

  5. 2021年Java工程师飞升成神之路

    点击关注"爱笑的架构师" 右上角"设为星标"好文章送达比别人快 最近有很多读者问:怎样成为一名架构师? 在大家眼中『架构师』的地位高高在上,不可逾越,其实不然, ...

  6. oracle 日期转换成毫秒数,ORACLE:毫秒与日期的相互转换,获取某天的信息

    毫秒转换为日期 SELECT TO_CHAR(1406538765000 / (1000 * 60 * 60 * 24) + TO_DATE('1970-01-01 08:00:00', 'YYYY- ...

  7. JAVA 的 Date、Calendar的常用用法

    一.Date与String的互转用法,这里需要用到SimpleDateFormat Date date = new Date();         //设置格式         SimpleDateF ...

  8. java入门到成神之路的宝藏资源

    大家好,给大家先做个自我介绍 我是码上代码,大家可以叫我码哥 我也是一个普通本科毕业的最普通学生,我相信大部分程序员或者想从事程序员行业的都是普通家庭的孩子,所以我也是靠自己的努力,从毕业入职到一家传 ...

  9. Java程序员成神之路

    类变量和类方法(static) 什么时候需要用类变量 当我们需要让某个类共享同一个变量时,可以考虑将变量设置为类变量 类变量和实例变量的区别 类变量是该类的所有对象共享的,而实例变量是每个对象独享的 ...

最新文章

  1. ASP.NET Core 2.1 源码学习之 Options[1]:Configure
  2. Dominant Character 思维,字符串,贪心
  3. 使用DBLink方式同步远程数据库中含Blob、Clob字段表的问题解决
  4. PHP内核的学习--PHP生命周期
  5. IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
  6. 经典案例之MouseJack
  7. 一招教你数据仓库如何高效批量导入与更新数据
  8. 水仙花数python代码输入一个介于3到5的正整数_Python练习题——自幂数(水仙花数)...
  9. 数据结构与算法之-----栈的应用(一)
  10. 有关嵌入式、单片机、51单片机、STM32、的一些概念详解
  11. Java项目:前台展示+后台管理结合的在线购书系统(java+Springboot+ssm+mysql+maven)
  12. mysql怎么设主键和外键_MySQL主键外键设定方法
  13. 外接键盘Win键不能的使用问题以及FN键的使用
  14. 【SPSS】第3讲学习笔记——数据导入和查看
  15. 数据库查询-分数排名
  16. 令人愉快的 Nuxt3 教程 (二): 快速轻松地搭建博客
  17. win10系统 开启蓝牙服务器,win10系统蓝牙在哪开启?
  18. 篮球比赛计时计分系统java_非常实用的java自动答题计时计分器
  19. 物联网之NB-IoT技术实践开发三
  20. 机器视觉光源颜色选择

热门文章

  1. 黄金分割法(0.618法)python实现
  2. (附源码)计算机毕业设计SSM银行服务评价系统
  3. Vue进阶(三十六):created() 详解
  4. 2019年—可能是我们Java程序员离危机感最近的一年!
  5. 使用node.js实现图片压缩
  6. 恶意代码修改IE和注册表恢复全集
  7. 【转载】微服务架构论文-马丁福勒
  8. 搞笑恶搞彩虹糖的梦—三炮山人组之2人世界
  9. SecureCRT上传文件到服务器 CentOS举例
  10. Mars3D开发基础学习:Property属性机制