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 }
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!
相关推荐:
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/10672030.html