package com.jesims.busresume.web;

import org.springframework.stereotype.Service;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*; @Service
public class RiskControlRulesDateUtils {
private static final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); /**
* 获取前x月的日期
* @param month
* @return
*/
public Map<String,String> getNowAndBefore(int month){
Date now = new Date();
Date newDate = stepMonth(now, -month);
Map<String,String> map =new HashMap<>();
// 现在时间
map.put("now",DATE_FORMAT.format(now));
// 之前时间
map.put("before",DATE_FORMAT.format(newDate));
return map;
} /**
* 获取后x天的日期
* @param day
* @return
*/
public Map<String,String> getNowAndChangeDay(int day){
Date now = new Date();
Date newDate = stepDay(now, day);
Map<String,String> map =new HashMap<>();
// 现在时间
map.put("now",DATE_FORMAT.format(now));
// 之后时间
map.put("change",DATE_FORMAT.format(newDate));
return map;
} /**
* 在给定的日期加上或减去指定月份后的日期
* @param sourceDate 原始时间
* @param month 要调整的月份,向前为负数,向后为正数
* @return
*/
public Date stepMonth(Date sourceDate, int month) {
Calendar c = Calendar.getInstance();
c.setTime(sourceDate);
c.add(Calendar.MONTH, month);
return c.getTime();
}
/**
* 在给定的日期加上或减去指定月份后的日期
* @param
* @param day 要调整的天数,向前为负数,向后为正数
* @return
*/
public Date stepDay(Date sourceDate, int day) {
Calendar c = Calendar.getInstance();
c.setTime(sourceDate);
c.add(Calendar.DAY_OF_MONTH, day);
return c.getTime();
} /**
* 输出如下:
* "[2016-02, 2016-03, 2016-04, 2016-05, 2016-06, 2016-07,
* 2016-08, 2016-09, 2016-10, 2016-11, 2016-12, 2017-01]"
*/
/**
* 获取当前系统时间最近12月的年月(含当月)
* @return
*/
public String[] getLatest12Month(){
String[] latest12Months = new String[12];
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1); //要先+1,才能把本月的算进去
for(int i=0; i<12; i++){
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)-1); //逐次往前推1个月
latest12Months[11-i] = cal.get(Calendar.YEAR)+ "-" +fillZero(cal.get(Calendar.MONTH)+1);
}
System.out.println(Arrays.toString(latest12Months)); return latest12Months;
}
public List<String> getLast12Month(){
List<String> list =new ArrayList<>();
String[] latest12Month = getLatest12Month();
for (int i = 0; i < latest12Month.length; i++) {
list.add(latest12Month[i]);
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
} return list;
} /**
* 格式化月份
*/
public static String fillZero(int i){
String month = "";
if(i<10){
month = "0" + i;
}else{
month = String.valueOf(i);
}
return month;
}
}

获取前(后)x月的日期的更多相关文章

  1. js获取前几个月的具体日期

    // 往前数monthNum月份,不能往后数monthNum getPreMonthDay("2018-12-28",20) // 往前数monthNum月份,不能往后数month ...

  2. js获取前之前或之后的日期

    function fun_date(aa){ var date1 = new Date(), time1=date1.getFullYear()+"-"+(date1.getMon ...

  3. 用javascript写一个显示时间差 几分钟前 几小时前 几天前 几周前 大于一个月显示日期

    window.onload = function(){ var show_times = $(".times span"); for(var i=0;i<show_times ...

  4. python获取当前日期前后N天或N月的日期

    # -*- coding: utf-8 -*- '''获取当前日期前后N天或N月的日期''' from time import strftime, localtime from datetime im ...

  5. python里如何获取当前日期前后N天或N月的日期

    #!/usr/bin/python#_*_ coding:UTF-8_*_ import timeimport datetimeimport mathimport calendar ''' time. ...

  6. 【python】python获取当前日期前后N天或N月的日期

    # -*- coding: utf- -*- '''获取当前日期前后N天或N月的日期''' from time import strftime, localtime from datetime imp ...

  7. PHP获取指定时间的前6个月月份 、获取前6天日期

    //获取前6个月月份 public function to_sex_month(){ $today = input('param.today') ? input('param.today') : da ...

  8. php获取前一天,前一个月,前一年的时间

    获取前一天的时间: $mytime= date("Y-m-d H:i:s", strtotime("-1 day")); 获取三天前的时间: $mytime= ...

  9. php 基础 php获取前一天,前一个月,前一年的时间

    获取前一天的时间: $mytime= date("Y-m-d H:i:s", strtotime("-1 day")); $mytime=mktime(0, 0 ...

  10. js控制日期的前或后N天,前或后一个月

    /*获取指定日期前或者后指定间隔时间* sdate:指定日期* interval:时间间隔* caret:间隔符*/function getNowFormatDate(sdate,interval,c ...

随机推荐

  1. 如何在 Anolis 8上部署 Nydus 镜像加速方案?

    简介: 手把手教你在 Anolis OS 上部署 Nydus! 在上一篇文章中详细介绍Anolis OS 是首个原生支持镜像加速 Linux 内核,Nydus 镜像加速服务重新优化了现有的 OCIv1 ...

  2. [Contract] 监听 MetaMask 网络变化, 账号切换

    为什么需要监听网络变化?目前在 MetaMask 中切换网络,网页会自动刷新,但是这一特性后面将停止使用. MetaMask: MetaMask will soon stop reloading pa ...

  3. WPF 使用 Win10 的 WinRT 自带 Windows.Media.Ocr 实现图片转文本

    世界上有很多 OCR 识别技术,本文来和大家介绍如果在 WPF 里,在运行到 win10 的设备上,通过 Windows Runtime 自带的 Windows.Media.Ocr 实现在给定的图片里 ...

  4. GitHub 的 Action 接入 Stryker.NET 进行自动化测试单元测试鲁棒性

    假设有一个捣蛋的小伙伴加入了你的团队,这个捣蛋的小伙伴喜欢乱改代码,请问此时的单元测试能否拦住这些逗比行为?如果不能拦住逗比行为,是否代表着单元测试有所欠缺,或者有某些分支逻辑没有考虑到.本文将告诉大 ...

  5. 005_Orcad里创建Homogeneous分裂元件

    005_Orcad里创建Homogeneous分裂元件 两种类型Homogeneous和Hetergeneous的区别,都是用来把一个复杂的元件分成多个部分来画,不同的是homogeneous画的每部 ...

  6. Pinely Round 3 (Div. 1 + Div. 2)

    A 构造题,分两种情况考虑 上下都行,左右选一个 左右都行,上下选一个 void solve() { int n; cin >> n; vector<pair<int, int ...

  7. VMware最小化安装Centos7.6-无桌面

    目录 安装包工具 新建虚拟机 安装 centos 7.6 系统 终端登陆系统 设置ip地址 关闭防火墙 关闭 SELINUX SELINUX=enforcing 硬盘挂载 桥接上网方式 安装包工具 V ...

  8. leaflet常用插件汇总介绍

    1.Leaflet Ant Path(线条流动效果) 在交通项目.管网应用的项目中,常常需要标注出道路的走向.河流的流向或者管线的流向等等,Leaflet Ant Path能够很好的解决这类问题: g ...

  9. d3d12龙书阅读----绘制几何体(下)

    d3d12龙书阅读----绘制几何体(下) 本节在上一节的基础上,对整个绘制过程进行优化,将绘制单个几何体的内容拓展到了多个几何体,同时对根签名进行了进一步地探索. 帧资源 在之前绘制每帧的结尾,我们 ...

  10. java学习之旅(day.03)

    整数拓展: 进制 二进制:以0b开头 十进制:我们生活中的正常数 int i=10 八进制:以0开头 int i=010 十六进制:以0x开头 0~9 A~F int i=0x10 浮点数拓展: fl ...