zoukankan      html  css  js  c++  java
  • java 根据系统日期获取前一天、后一天时间(根据初始日期推算出期望(向前/向后)日期)

    1.情景展示

       java 根据系统当前日期获取前一天日期、后一天日期,或者根据初始日期推算出期望(向前/向后)日期。

    2.解决方案

      导包

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    

      方法一:

    /**
     * 根据初始日期推算期望(向前/向后)日期
     * @param initTime
     *     初始日期(initTime可以是null、Date、String数据类型)
     * @param n
     *     向前/向后推算n天(n可以是正整数、0、负整数)
     * @return
     *     推算后的日期字符串
     */
    public static String getCalculateDay(Object initTime,int n){
        // 返回推算后的日期
        String calculateDay = "";
        try {
            // 实例化日历类Calendar
            Calendar calendar = Calendar.getInstance();  
            // 定义日期格式化样式
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            // 初始日期
            Date initDate = null;
            // 判断参数类型
            if (null == initTime) {
                // 取系统当前时间
                initDate = new Date();
            } else if (initTime instanceof Date) {
                initDate = (Date)initTime;
            } else {
                // 日期格式字符串转换成日期类Date
                initDate = sdf.parse((String)initTime);
            }
            
            // 设置日历时间
            calendar.setTime(initDate);
            // 设置推算后的日历时间
            calendar.add(Calendar.DATE, n);
            // 获取推算后的日期
            Date calculateDate = calendar.getTime();
            // 进行格式化
            calculateDay = sdf.format(calculateDate);
        } catch(ParseException e) {
            e.printStackTrace();
        }
        return calculateDay;
    }
    

      方法二:

    /**
     * 根据初始日期推算期望(向前/向后)日期
     * @param initTime
     *     初始日期
     * @param n
     *     向前/向后推算n天
     * @return
     *     推算后的日期
     */
    public static String getCalculateDay2(Object initTime,int n) throws ParseException{  
        // 返回推算后的日期
        String calculateDay = "";
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        // 初始日期
        Date initDate = null;
        
        if (null == initTime)
        	initDate = new Date();
    	else if (initTime instanceof Date)
    		initDate = (Date)initTime;
        else
        	initDate = sdf.parse((String)initTime);
        
        // 转换成距离1970年0时0分的毫秒数
        Long initMilliSeconds = initDate.getTime();
        // 一天代表的毫秒数
        int oneDayTime = 24 * 60 * 60 * 1000;
        initMilliSeconds += oneDayTime * n;
        
        // 推算出的日期
        Date calculateDate = new Date(initMilliSeconds);
        calculateDay = sdf.format(calculateDate);
        return calculateDay;
    }
    

    3.测试

    public static void main(String[] args) throws ParseException {
    	// 获取后一天所在日期
    	System.out.println(getCalculateDay(null,1));// 2019-04-09
    	System.out.println(getCalculateDay2(null,1));// 2019-04-09
    }
    

      

    写在最后

      哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

     相关推荐:

  • 相关阅读:
    xcode 常用插件 加快开发速度 --严焕培
    iOS,蓝牙开发!!--By帮雷
    获取加速度数据,陀螺仪数据,磁场数据的两种方式-陈鹏
    简单仿京东"筛选"界面 双导航栏控制器共存 by Nicky.Tsui
    扩展NSDate类实现快捷使用 —— 昉
    如何实现视图圆角效果的三种方法及比较——董鑫
    无意进去UIView随笔闹腾着玩 -by 胡 xu
    简单实现UITableView索引功能(中英文首字母索引)(一) ByH罗
    动画推荐-By胡罗
    [手游项目3]-20-golang向上取整、向下取整和四舍五入
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/10672030.html
Copyright © 2011-2022 走看看