朋友圈发布时间(Date、DateFormat、Calendar)
程序员文章站
2022-05-18 17:42:33
一、日期时间类1.java.util.Date类:表示特定的瞬间,精确到毫秒常用方法:public Date() :获取当前时间public Date(long date):把毫秒值转成日期对象public long getTime() :把日期对象转换成对应的时间毫秒值 // 创建日期对象,获取当前的时间 System.out.println(new Date()); //Thu Jul 30 16:48:12 CST 2020 // 创建日...
一、日期时间类
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天前发布
本文地址:https://blog.csdn.net/qq_33591873/article/details/107694699
上一篇: 木耳泡多久就不能吃了?木耳可以怎么吃呢?
下一篇: java开发语言的继承
推荐阅读
-
16_常用API_第16天(正则表达式、Date、DateFormat、Calendar)_讲义
-
朋友圈发布时间(Date、DateFormat、Calendar)
-
Date,DateFormat,Calendar类的使用
-
Java基础学习笔记三 正则表达式和校验、Date、DateFormat、Calendar
-
JAVA基础之Date类、DateFormat类及Calendar类
-
Java_Day013_正则表达式、Date、DateFormat、SimpleDateFormat、Calendar、Math
-
java中如何设置准确的时间,不要用Date,而要用Calendar
-
Java中关于时间的处理:Calendar、Date、Long、String
-
<时间-2>Date & DateFormat & SimpleDateFormat & Calendar
-
朋友圈发布时间(Date、DateFormat、Calendar)