最近开发的项目平凡用到时间的各种计算及转化,虽然没多少技术含量但也记录一下。
直接上代码拿走不谢。


import org.apache.http.client.utils.DateUtils;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;public class DateUtil {/*** 获取系统你天前或n天后的日期* @param days* @return*/public static String daysAgo(int days){Calendar calendar1 = Calendar.getInstance();SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd 00:00:00");calendar1.add(Calendar.DATE, days);String days_ago = sdf1.format(calendar1.getTime());return days_ago;}/*** 时间戳转换成日期格式字符串* @param seconds 精确到秒的字符串* @return*/public static String timeStamp2Date(String seconds,String format) {if(seconds == null || seconds.isEmpty() || seconds.equals("null")){return "";}if(format == null || format.isEmpty()){format = "yyyy-MM-dd HH:mm:ss";}SimpleDateFormat sdf = new SimpleDateFormat(format);return sdf.format(new Date(Long.valueOf(seconds+"000")));}/*** 日期格式字符串转换成时间戳* @param format 如:yyyy-MM-dd HH:mm:ss* @return*/public static String date2TimeStamp(String date_str,String format){try {SimpleDateFormat sdf = new SimpleDateFormat(format);return String.valueOf(sdf.parse(date_str).getTime()/1000);} catch (Exception e) {e.printStackTrace();}return "";}/*** 取得当前时间戳(精确到秒)* @return*/public static String timeStamp(){long time = System.currentTimeMillis();String t = String.valueOf(time/1000);return t;}/*** 获取两个日期相差的天数** @param startDateStr 开始时间* @param endDateStr 结束时间*/public static int getDayBetweenTwoDate(String startDateStr, String endDateStr) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");int days = 0;try {Date startDate = simpleDateFormat.parse(startDateStr);Date endDate = simpleDateFormat.parse(endDateStr);Calendar startCalendar = Calendar.getInstance();startCalendar.setTime(startDate);Calendar endCalendar = Calendar.getInstance();endCalendar.setTime(endDate);//计算两个日期相差的天数//startCalendar.getTime().getTime()返回long毫秒数形式,毫秒转为秒所以除以1000//1天=24小时,1小时=60分,1分=60秒,所以两个时间的差再除以60 * 60 * 24换算成天的形式days = ((int) (startCalendar.getTime().getTime() / 1000) - (int) (endCalendar.getTime().getTime() / 1000)) / (60 * 60 * 24);} catch (ParseException e) {e.printStackTrace();}return days;}/*** 某一个月第一天和最后一天** @param date 指定日期* @param pattern 日期格式* @param isNeedHms 是否需要时分秒* @return*/public static Map<String, Object> getFirstLastDayByMonth(Date date,String pattern, boolean isNeedHms) {SimpleDateFormat df = new SimpleDateFormat(pattern);Calendar calendar = Calendar.getInstance();calendar.setTime(date);Date theDate = calendar.getTime();// 第一天GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance();gcLast.setTime(theDate);gcLast.set(Calendar.DAY_OF_MONTH, 1);String day_first = df.format(gcLast.getTime());StringBuffer str = new StringBuffer().append(day_first);if (isNeedHms)str.append(" 00:00:00");day_first = str.toString();// 最后一天calendar.add(Calendar.MONTH, 1); // 加一个月calendar.set(Calendar.DATE, 1); // 设置为该月第一天calendar.add(Calendar.DATE, -1); // 再减一天即为上个月最后一天String day_last = df.format(calendar.getTime());StringBuffer endStr = new StringBuffer().append(day_last);if (isNeedHms)endStr.append(" 23:59:59");day_last = endStr.toString();Map<String, Object> map = new HashMap<String, Object>();map.put("first", day_first);map.put("last", day_last);return map;}/*** 获取当前季度**/public static String getQuarter() {Calendar c = Calendar.getInstance();int month = c.get(c.MONTH) + 1;int quarter = 0;if (month >= 1 && month <= 3) {quarter = 1;} else if (month >= 4 && month <= 6) {quarter = 2;} else if (month >= 7 && month <= 9) {quarter = 3;} else {quarter = 4;}return quarter + "";}/*** 获取某季度的第一天和最后一天*  @param num 第几季度*/public static String[] getCurrQuarter(int num) {String[] s = new String[2];String str = "";// 设置本年的季Calendar quarterCalendar = null;switch (num) {case 1: // 本年到现在经过了一个季度,在加上前4个季度quarterCalendar = Calendar.getInstance();quarterCalendar.set(Calendar.MONTH, 3);quarterCalendar.set(Calendar.DATE, 1);quarterCalendar.add(Calendar.DATE, -1);str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");s[0] = str.substring(0, str.length() - 5) + "01-01";s[1] = str;break;case 2: // 本年到现在经过了二个季度,在加上前三个季度quarterCalendar = Calendar.getInstance();quarterCalendar.set(Calendar.MONTH, 6);quarterCalendar.set(Calendar.DATE, 1);quarterCalendar.add(Calendar.DATE, -1);str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");s[0] = str.substring(0, str.length() - 5) + "04-01";s[1] = str;break;case 3:// 本年到现在经过了三个季度,在加上前二个季度quarterCalendar = Calendar.getInstance();quarterCalendar.set(Calendar.MONTH, 9);quarterCalendar.set(Calendar.DATE, 1);quarterCalendar.add(Calendar.DATE, -1);str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");s[0] = str.substring(0, str.length() - 5) + "07-01";s[1] = str;break;case 4:// 本年到现在经过了四个季度,在加上前一个季度quarterCalendar = Calendar.getInstance();str = DateUtils.formatDate(quarterCalendar.getTime(), "yyyy-MM-dd");s[0] = str.substring(0, str.length() - 5) + "10-01";s[1] = str.substring(0, str.length() - 5) + "12-31";break;}return s;}/*** 根据日期(Date)获取哪年的第几季度* @param date* @return* @throws ParseException*/public static String GetQuarterByDate(String date) throws ParseException{if(date == ""|| "".equals(date)){return "";}SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date datePar = sdf.parse(date);Calendar calendar = Calendar.getInstance();calendar.setTime(datePar);//String year = String.valueOf(calendar.get(Calendar.YEAR));int mouth = datePar.getMonth();if(mouth>=1 && mouth<=3){return "1"; //"第一季度";}else if(mouth>=4 && mouth<=6){return "2"; //"第二季度";}else if(mouth>=7 && mouth<=9){return "3"; //"第三季度";}else if(mouth>=10 && mouth<=12){return "4"; //"第四季度";}else{return "";}}/*** 用途:以指定的格式格式化日期字符串* @param pattern 字符串的格式* @param currentDate 被格式化日期* @return String 已格式化的日期字符串* @throws NullPointerException 如果参数为空*/public static String formatDate(Date currentDate, String pattern){if(currentDate == null || "".equals(pattern) || pattern == null){return null;}SimpleDateFormat sdf = new SimpleDateFormat(pattern);return sdf.format(currentDate);}/**** @param time 时间* @param num 加的数,-num就是减去* @return 减去相应的数量的月份的日期* @throws ParseException Date*/public static Date monthAddNum(Date time, Integer num){//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//Date date = format.parse(time);Calendar calendar = Calendar.getInstance();calendar.setTime(time);calendar.add(Calendar.MONTH, num);Date newTime = calendar.getTime();return newTime;}public static void main(String[] args) {}}

日期按、天、月、季度计算及格式化相关推荐

  1. java date 一个月_java中的日期加一个月的计算

    Homepage URL http://flysky-1.at.vwdhosting.net FTP server name: ftp://flysky-1@ftp6.vwdhosting.net L ...

  2. JS-计算日期差值;计算日期之间的月数

    计算两天之间的日期差值 // 输入格式:yyyy-MM-DD function daysBetween(sDate1, sDate2) {//Date.parse() 解析一个日期时间字符串,并返回1 ...

  3. 41.从入门到精通:格式化日期 获取某月日历 Time 模块 日历(Calendar)模块 其他相关模块和函数

    41.从入门到精通:格式化日期 获取某月日历 Time 模块 日历(Calendar)模块 其他相关模块和函数 格式化日期 获取某月日历 Time 模块 日历(Calendar)模块 其他相关模块和函 ...

  4. 利用element日期组件,封装季度组件, 实现日、周、月、季度切换,默认禁用部分日期选择(附带:获取昨日、昨日所在周、昨日所在月、昨日所在季度等方法)

    具体效果图下: 1. 季度组件封装,创建一个 quarterDate.vue文件 <!-- 季度组件 --> <template><div><el-popov ...

  5. oracle日期相减工作日_Oracle 计算两个日期间隔的天数、月数和年数

    在Oracle中计算两个日期间隔的天数.月数和年数: 一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy' ...

  6. java日期加减秒_Java日期——年、月、日、时、分、秒、周加减计算

    Java日期--年.月.日.时.分.秒.周加减计算 Java日期--年.月.日.时.分.秒.周加减计算 1.Pom依赖 joda-time joda-time 2.9.9 2.示例代码 package ...

  7. 怎么用计算机计算年月份,如何使用Excel计算两个日期之间的月数?

    一.这可以通过DATEDIF函数完成. 二. DATEDIF函数的定义 DATEDIF函数是Excel中的隐藏函数,而不是帮助和插入公式中的隐藏函数.返回两个日期之间的年\月\日间隔的数量. DATE ...

  8. 计算二个日期经过几月又几天

    若要计算二个日期经过几月又几天,需要考虑期间每个月份的天数,每个月的天数是不一样的. 所以我们可以先计算经过几个月,然后把起始日期累加异差月份数,再计算差异天数.         Dim oDate1 ...

  9. 填写开始日期后根据天数或者月数计算结束日期

    根据天数计算结束日期 const getEndDateForDays = (date,day) => {var newTime = Date.parse(date) //将日期时间转换为毫秒值v ...

最新文章

  1. 跨域资源共享的10种方式
  2. CodeForces - 1535C Unstable String(思维)
  3. AspectJ基于xml和基于注解
  4. Socket编程实践(1) --TCP/IP简述
  5. 测试行业爬了7年,从功能测试到高级测试,工资也翻了好几倍
  6. 为什么烂软件大行其道而好软件无人问津?
  7. 浅谈(Java)AIO-异步IO
  8. 群联PS2251-07主控(Kingston64G)量产CD-ROM+移动磁盘模式过程记录
  9. Marlin固件配置教程详解
  10. AMD录用前IBM中国总裁周伟焜为公司董事会成员
  11. php条件 效率高,PHP高效率写法
  12. matlab异步电机仿真,基于MATLAB的异步电机仿真系统
  13. UE4灰度图生成地图记录blender生成城市地形
  14. Ubuntu安装必备软件
  15. 前端(JS)windows命令行生成树目录结构和结构图
  16. sja1000 中断_SJA1000PeliCAN模式下自收发问题
  17. 一颗红心,三手准备,分别基于图片(img)/SCSS(样式)/SVG动画实现动态拉轰的点赞按钮特效
  18. windows下安装masscan
  19. 解决mac Cornerston的Authentication provider raised an exception 更新失败问题
  20. 【C#】【平时作业】习题-5-类的基础知识

热门文章

  1. 国内域名和国际域名的理解和区分
  2. android定时器写法
  3. Linux——把用户加入和移除用户组
  4. AlphabetJS --- 在console或者shell中打印字符图案的小工具
  5. 服务器Hot Spare热备
  6. 从百度信誉评级看未来网络优化的方向
  7. 自回归滑动平均模型ARMA
  8. cocoa touch——UIControl——state,highlighted,enabled,selected
  9. iOS UIButton Highlighted是指点击还没有松开的状态
  10. ggplot2中facet_grid的分面字体、颜色和背景的修改