java 根据系统日期获取前一天、后一天时间(根据初始日期推算出期望(向前/向后)日期) 20253296编辑

Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注

java 根据系统日期获取前一天、后一天时间(根据初始日期推算出期望(向前/向后)日期)

Created by Marydon on 2019-04-08 17:39

1.情景展示

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

2.解决方案

  导包

1
2
3
4
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

  方法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
 * 根据初始日期推算期望(向前/向后)日期
 * @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;
}

  方法二:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
 * 根据初始日期推算期望(向前/向后)日期
 * @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.测试

1
2
3
4
5
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
}

  

写在最后

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

 相关推荐:

与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。

您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!

↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓

posted @   Marydon  阅读(3296)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
历史上的今天:
2018-04-08 js改变下拉框内容
2018-04-08 eclipse 关闭web项目无用校验
点击右上角即可分享
微信分享提示
sorry,本博客所有代码禁止复制,原创代码需扫码支付方可获取!
关闭

1、先加好友再付费,点我加好友;

2、代码不能满足你的需求?加好友付费定制你的专属代码!

3、付费标准及方式,点我查看详情。