一、日期时间类

1.java.util.Date类:表示特定的瞬间,精确到毫秒

常用方法:

  • public Date() :获取当前时间
  • public Date(long date):把毫秒值转成日期对象
  • public long getTime() :把日期对象转换成对应的时间毫秒值
        //1.创建日期对象,获取当前的时间System.out.println(new Date()); //Thu Jul 30 16:48:12 CST 2020//2.创建日期对象,把输入的毫秒值转成日期对象System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970//3.把date对象转换成毫秒值long l = date.getTime();System.out.println(l); //1596100672632

2.java.text.DateFormat类:可以在让Date对象与String对象互相转换,但是DateFormat为抽象类,不能直接使用,所以需要常用的子类java.text.SimpleDateFormat

构造方法:

  • public SimpleDateFormat(String pattern):自定时间字符串格式类型
     //创建日期格式化对象,格式自定义DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

格式规则:

常用方法:

  • public String format(Date date):将Date对象格式化为字符串
  • public Date parse(String source):将字符串解析为Date对象
     //1. Date->String: format();方法//创建日期对象,获取当前时间Date date = new Date();System.out.println(date); //Thu Jul 30 16:48:12 CST 2020//创建日期格式化对象,格式自定义DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String moment = df.format(date);System.out.println("现在的时间为:" + moment); //现在的时间为:2020-07-30 16:48:12//2. String->Date:  parse();方法//创建字符串对象,获取指定时间String today = "2020年7月30日";//创建日期格式化对象,格式自定义DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日");Date date2 = df2.parse(today);System.out.println(date2); //Thu Jul 30 00:00:00 CST 2020

3.java.util.Calendar:日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。

获取方式:
Calendar为抽象类,在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象

  • public static Calendar getInstance():使用默认时区和语言环境获得一个日历
     //使用默认时区和语言环境获得一个日历Calendar calendar = Calendar.getInstance();

Calendar类中提供很多成员常量,代表给定的日历字段:

常用方法:

  • public int get(int field):获取指定字段的值
  • public void set(int field, int value):设置指定字段的值
  • public abstract void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量
  • public Date getTime():返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象
     //1.创建Calender对象,get()方法Calendar cal = Calendar.getInstance();//设置年int year = cal.get(Calendar.YEAR);//设置月,在Calendar类中,月份的表示是以0-11代表1-12月int month = cal.get(Calendar.MONTH) + 1;//设置日int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);System.out.println(year + "年" + month + "月" + dayOfMonth + "日"); //2020年7月30日//2.set()方法cal.set(Calendar.YEAR,2021);year = cal.get(Calendar.YEAR);System.out.println(year + "年" + month + "月" + dayOfMonth + "日"); //2021年7月30日//3.add()方法System.out.println(year + "年" + month + "月" + dayOfMonth + "日"); //2021年7月30日cal.add(Calendar.DAY_OF_MONTH,1); //加一天cal.add(Calendar.YEAR,-3); //减3年year = cal.get(Calendar.YEAR);dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);System.out.println(year + "年" + month + "月" + dayOfMonth + "日"); //2018年7月31日//4.getTime()方法date = cal.getTime();System.out.println(date); //Tue Jul 31 19:05:19 CST 2018

二、典型案例

1.需求

当我们发朋友圈时,会有发布的时间,输入一个发朋友圈的时间,判断是多久之前发的1,刚刚发布2,几分钟前发布(具体的分钟)3,半个小时前发布4,几小时前发布5,昨天发布6,几天前发布

2.思路

     //第一步:提示用户输入朋友圈的发布时间//第二步:将朋友圈发布时间转化成日期对象//第三步:将日期对象转化成毫秒值进行比较(需要此时、昨天、前天三个日期对象)//第四步:进行毫秒差值判断//第五步:打印朋友圈发布时间输入格式

3.代码实现

package test0730.demo1;import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;/*** 当我们发朋友圈时,会有发布的时间,输入一个发朋友圈的时间,判断是多久之前发的1,刚刚发布2,几分钟前发布(具体的分钟)3,半个小时前发布4,几小时前发布5,昨天发布6,几天前发布*/
public class Moments {public static void main(String[] args) throws ParseException {//第一步:提示用户输入朋友圈的发布时间//第二步:将朋友圈发布时间转化成日期对象//第三步:将日期对象转化成毫秒值进行比较(需要此时、昨天、前天三个日期对象)//第四步:进行毫秒差值判断//第五步:打印朋友圈发布时间输入格式Moments m = new Moments();m.showMoments();}//朋友圈时间展示public void showMoments() throws ParseException {System.out.println("请输入朋友圈的发布时间:格式为yyyy-MM-dd HH:mm:ss");Scanner sc = new Scanner(System.in);String postTime = sc.nextLine(); //朋友圈发布时间DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //日期格式Date postTimeDate = df.parse(postTime); //朋友圈发布日期对象Date now = new Date(); //现在日期对象Calendar nowC = Calendar.getInstance(); //现在日历对象//把时间分钟秒设置为0,就是昨天晚上0点的日历nowC.set(Calendar.HOUR_OF_DAY,0);nowC.set(Calendar.MINUTE,0);nowC.set(Calendar.SECOND,0);Date yesterday = nowC.getTime(); //把昨天的日历转换成日期nowC.add(Calendar.DAY_OF_MONTH,-1); //前天日历Date beforeYesterday = nowC.getTime(); //把前天的日历转换成日期//将日期转换成毫秒值long postTimeSecond = postTimeDate.getTime();long nowSecond = now.getTime(); //此时毫秒值long y_secone  = yesterday.getTime(); //昨天毫秒值long b_secone  = beforeYesterday.getTime(); //前天毫秒值//将两个日期转换成毫秒值,之后得到秒差值long secone  = (nowSecond - postTimeSecond)/1000;long ySecone = (nowSecond - y_secone)/1000;long bSecone = (nowSecond - b_secone)/1000;//调用毫秒差值判断方法if(secone >= bSecone){System.out.println(secone/60/60/24 + "天前发布");} else if(secone >= ySecone){System.out.println("昨天发布");} else if(secone >= 0){Moments.seconeJudge(secone);} else {System.out.println("输入有误");}}//当天发布毫秒差值判断public static void seconeJudge(long secone){if (secone < 60) {System.out.println("刚刚发布");} else if (secone/60 < 30) {System.out.println(secone/60 + "分钟前发布");} else if (secone/60 < 60) {System.out.println("半个小时前发布");} else if (secone/60/60 < 24) {System.out.println(secone/60/60 + "小时前发布");}}
}

4.运行结果

请输入朋友圈的发布时间:格式为yyyy-MM-dd HH:mm:ss
2020-07-30 22:45:15
刚刚发布请输入朋友圈的发布时间:格式为yyyy-MM-dd HH:mm:ss
2020-07-30 22:43:15
2分钟前发布请输入朋友圈的发布时间:格式为yyyy-MM-dd HH:mm:ss
2020-07-30 22:15:15
半个小时前发布请输入朋友圈的发布时间:格式为yyyy-MM-dd HH:mm:ss
2020-07-30 20:15:15
2小时前发布请输入朋友圈的发布时间:格式为yyyy-MM-dd HH:mm:ss
2020-07-29 23:59:59
昨天发布请输入朋友圈的发布时间:格式为yyyy-MM-dd HH:mm:ss
2020-07-15 13:59:59
15天前发布

朋友圈发布时间(Date、DateFormat、Calendar)相关推荐

  1. 朋友圈发布时间格式化工具类

    类似于朋友圈发布时间格式化工具,一秒前,一分钟前,一小时前,昨天,一天前- package com.walking.common.utils;import java.text.DateFormat; ...

  2. Android实现仿微信朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)

    原址: http://blog.csdn.net/zhang3776813/article/details/52092591 /*** 仿微信朋友圈发布动态* 拍照或图库选择 * 压缩图片并保存**/ ...

  3. php 朋友圈留言,php实例-PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)...

    我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么这个功能是如何实现的呢?下面小编给大家带来了实例代码,对PHP仿qq空间或朋友圈发布动态.评论动态.回复评论.删除动态或评论 ...

  4. php mysql仿微信朋友圈评论表设计_PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)...

    我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么作为初学者,要模仿这些功能有点复杂的,最起码表的关系得弄清楚~~ 先把思路理一下: (1)用户登录,用session读取当前 ...

  5. Flutter高仿微信-第16篇-朋友圈-发布作品(图片)

     Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 效果图: 实现 ...

  6. iphone android 朋友圈,最近很火的微信空白朋友圈发布教程!安卓、苹果通用!

    原标题:最近很火的微信空白朋友圈发布教程!安卓.苹果通用! 各位小伙伴,晚上好啊!已经一个月没有更新了,这篇文章几天之前就要推送了,一直拖到现在,真是名副其实的"拖更王". 微信作 ...

  7. Android实现仿微信朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)附源码

             原创作品,转载请注明出处:http://blog.csdn.net/zhang3776813/article/details/52092591 最近项目需求中要用到类似微信朋友圈发布 ...

  8. 【Java从入门到头秃专栏 】(三) 控制流程 Math Date DateFormat Calendar System BigDecimal Random

    目录 1 控制流程 2 Math类 3 Date类 4 DateFormat类 5 Calendar类(日历类) 6 System类 7 BigDecimal类 8 Random类(随机数) 1 控制 ...

  9. 微信小程序-仿朋友圈发布动态(包括后端上传图片)

    仿照微信朋友圈做了一个界面如下,先看效果: 1.点开界面 2.选择图片 3.点击上传 4.动态显示 第一个页面的wxml: <view class='page'><textarea ...

  10. 微信朋友圈长视频服务器地址,微信朋友圈发布60秒+长视频教程

    最近看到一些朋友在求微信朋友圈发长视频方法,下面给大家大概解释一哈: 1.下载好趣推等能压缩视频软件的APP,注册登录,打开微信小视频功能.ps:不用开什么vip,普通用户可以使用这个功能 2.导入你 ...

最新文章

  1. 用dw中html设置背景,Dreamweaver 教程-CSS背景属性(background)
  2. Openstack 通过 SQLAlchemy-ORM 访问数据库
  3. 【Visual Studio 2019】上传代码到 GitHub ( 16.9.2 版本 | 安装 GitHub 扩展插件 | 创建 Git 仓库 | 推送到远程仓库 )
  4. 【小项目关键技术六】控制北斗 GPS 定位 / UWB 室内定位
  5. JZOJ 5417. 【NOIP2017提高A组集训10.24】方阵
  6. 不悲观-不emo-永远保持正能量——21年末,去掉所有的不开心
  7. 常用的分布式事务解决方案介绍
  8. 华为桌面云 服务器可以虚拟多少,【华为桌面云】案例:单服务器环境且只有两块本地SATA盘创建虚拟机非常慢...
  9. uva 120——Stacks of Flapjacks
  10. 目录操作相关的系统函数
  11. 比Postman更懂中国程序员,Apipost真香!
  12. java poi 页码,apache poi页码
  13. 后端比android简单,android开发怎么少的了后端(下)
  14. 3.15 送货通知单
  15. 华人运通高合HiPhiX维修手册电路图技术培训用户手册资料
  16. <EDEM 基础案例02>Rock Box
  17. 关闭135端口rpcss服务
  18. 算法竞赛入门-刽子手游戏(Hangman Judge )
  19. scrapy下载图片(《精通scrapy网络爬虫》第九章)
  20. URI、URL、URN介绍

热门文章

  1. 2022年最新广东交安安全员考试题库及答案
  2. 帮你解决Kali Linux 外接无线网卡显示不出来的问题
  3. 什么是数据分析,我们为什么要做数据分析?
  4. Linux常用图片查看处理软件
  5. 建立一个电脑网络至少需要两台计算机,两台电脑见建立一个局域网方法介绍
  6. Py之lime:lime库的简介、安装、使用方法之详细攻略
  7. Java笔记 - 黑马程序员_07(多线程,线程同步,线程池,网络编程入门,UDP通信原理,TCP通信原理,commons-io工具类)
  8. asm MGMT库迁移
  9. python中compile的作用_Python compile函数有什么用?
  10. 2015年底学习汇总报告