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
}

  

写在最后

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

相关推荐:

 

java 根据系统日期获取前一天、后一天时间(根据初始日期推算出期望(向前/向后)日期)的更多相关文章

  1. java日期获取前一天和后一天

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

  2. Java中获取前一天和后一天时间

    今天在开发项目的时候遇到一个问题就是怎么获取当前时间的前一天和后一天,这个实现的逻辑并不复杂,自己要写的话的也不是难事,但是貌似感觉没必要自己写这样的方法,想想Java中的Calendar类应该有这样 ...

  3. java获得指定日期的前一天,后一天的代码

    /** * 获得指定日期的前一天 * @param specifiedDay * @return * @throws Exception */ public static String getSpec ...

  4. Java日期获取需求大全

    刚进公司,作为熟悉技术,为公司做了一个小的点餐系统的网站,其中大量用到了时间日期作为唯一标示或是显示设置.特总结了一下和大家分享. package com.lucis.ordering.Utils; ...

  5. php获取指定日期的前一天,前一月,前一年日期

    ## php获取指定日期的前一天,前一月,前一年日期   前一天的日期为: date("Y-m-d",strtotime("-1 days",strtotime ...

  6. JavaScript如何实现日期的前一天后一天转变

    1.生成时间 var data =new Date(); 2.获得时间戳     什么是时间戳? 时间戳是指格林威治时间自1970年1月1日(00:00:00 GTM)至当前时间的总秒数.它也被称为U ...

  7. java获取前一天时间SimpleDateFormat,java判断某个时间段

    java获取前一天时间SimpleDateFormat SimpleDateFormat predf = new SimpleDateFormat("yyyy-MM-dd"); D ...

  8. angularjs1.X获取前一天日期

    $scope.getDate = new Date(); //可以当前日期 $scope.nowDate = $filter("date")($scope.getDate, &qu ...

  9. java根据日期获取周几和获取某段时间内周几的日期

    整理两个日期的方法. 根据日期获取当天是周几 /** * 根据日期获取当天是周几 * @param datetime 日期 * @return 周几 */ public static String d ...

随机推荐

  1. 20165235Linux安装及学习

    (一)安装虚拟机 在安装虚拟机的过程中我遇到了许多问题,首先是因为没有将CPU虚拟化,解决方法是我首先通过打开BIOS界面打开security,virtualization,选择Enable.解决了无 ...

  2. css上传图片中等待不可点击效果

    <!DOCTYPE html> <html> <head> <title>上传中</title> <style type=" ...

  3. es 模块的基础知识,深度了解

    // 一模块的基础知识 /** * export :用于模块输出的出口 * import :文件引入的入口 */ // 1,第一种方式使用export方式输出 var a = 'a'; var b = ...

  4. Webmin详细安装过程及问题解决

    管理系统是件艰巨的任务,创建用户账户,配置服务,检查日志,还有系统管理员必须面对的所有其他的职责,都使系统管理工作成为一个不小的负担.下面介绍一个叫webmin的软件,webmin软件安装后能让读者从 ...

  5. Codeforces 1082D Maximum Diameter Graph (贪心构造)

    <题目链接> 题目大意:给你一些点的最大度数,让你构造一张图,使得该图的直径最长,输出对应直径以及所有的边. 解题分析:一道比较暴力的构造题,首先,我们贪心的想,要使图的直径最长,肯定是尽 ...

  6. C++学习之 —— 输入输出

     案例:输入任意空格和数字,输出其中的数字之和. #include <iostream> using namespace std; int main() { ; cout << ...

  7. 流网络分析系统-SNAS

    流网络分析系统-SNAS SNAS,Streaming Network Analytics System (project SNAS) ,是一个收集.跟踪.存取 千万条实时路由对象的系统. 官网:ht ...

  8. Windows下MySQL绿色版安装配置与使用

    Mysql-5.7.11-winx64操作步骤: 一.安装MySQL数据库 1.下载. 下载地址: http://downloads.mysql.com/archives/get/file/mysql ...

  9. 使用Nginx部署静态网站

    这篇文章将介绍如何利用Nginx部署静态网站. 之前写过2篇有关Nginx的文章,一篇是<利用nginx,腾讯云免费证书制作https>,另外一篇是<linux安装nginx> ...

  10. SpringBoot多数据源

    很多业务场景都需要使用到多数据库,本文介绍springboot对多数据源的使用. 这次先说一下application.properties文件,分别连接了2个数据库test和test1.完整代码如下: ...