欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

朋友圈发布时间(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");

格式规则:
朋友圈发布时间(Date、DateFormat、Calendar)
常用方法:

  • 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类中提供很多成员常量,代表给定的日历字段:
朋友圈发布时间(Date、DateFormat、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