package com.mall.common;

 import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List; import org.apache.log4j.Logger; public class DateUtils {
private static Logger log=Logger.getLogger(DateUtils.class); /**
* 获取昨天日期
*
* @param date
* @return
*/
public static String getYesterDay(Date date) { java.text.Format formatter = new java.text.SimpleDateFormat(
"yyyy-MM-dd"); long beforeTime = (date.getTime() / 1000) - 24 * 60 * 60; date.setTime(beforeTime * 1000); return formatter.format(date); } /**
* 获取昨天日期(返回数值)
*
* @param date
* @return num
*/
public static Integer getYesterDayNum(Date date) { java.text.Format formatter = new java.text.SimpleDateFormat("yyyyMMdd"); long beforeTime = (date.getTime() / 1000) - 24 * 60 * 60; date.setTime(beforeTime * 1000); return Integer.parseInt(formatter.format(date)); } /**
* 获取一周前的日期(当前日期往前推7天)
*
* @param date
* @return
*/
public static String getWeekdayBeforeDate(Date date) { java.text.Format formatter = new java.text.SimpleDateFormat(
"yyyy-MM-dd"); long beforeTime = (date.getTime() / 1000) - 24 * 60 * 60 * 7; date.setTime(beforeTime * 1000); return formatter.format(date); } /**
* 获取一周前的日期(当前日期往前推7天)(返回数值)
*
* @param date
* @return
*/
public static Integer getWeekdayBeforeDateNum(Date date) { java.text.Format formatter = new java.text.SimpleDateFormat("yyyyMMdd"); long beforeTime = (date.getTime() / 1000) - 24 * 60 * 60 * 7; date.setTime(beforeTime * 1000); return Integer.parseInt(formatter.format(date)); } /**
* 获取一月前的日期(当前日期往前推30天)
*
* @param date
* @return
*/
public static String getMonthBeforeDate(Date date) { java.text.Format formatter = new java.text.SimpleDateFormat(
"yyyy-MM-dd"); long beforeTime = (date.getTime() / 1000) - 24 * 60 * 60 * 30; date.setTime(beforeTime * 1000); return formatter.format(date); } /**
* 获取一月前的日期(当前日期往前推30天)(返回数值)
*
* @param date
* @return
*/
public static Integer getMonthBeforeDateNum(Date date) { java.text.Format formatter = new java.text.SimpleDateFormat("yyyyMMdd"); long beforeTime = (date.getTime() / 1000) - 24 * 60 * 60 * 30; date.setTime(beforeTime * 1000); return Integer.parseInt(formatter.format(date)); } /**
* 获取三月前的日期(当前日期往前推90天)
*
* @param date
* @return
*/
public static String get3MonthBeforeDate(Date date) { java.text.Format formatter = new java.text.SimpleDateFormat(
"yyyy-MM-dd"); long beforeTime = (date.getTime() / 1000) - 24 * 60 * 60 * 30 * 3; date.setTime(beforeTime * 1000); String d = formatter.format(date);
return d;
} /**
* 获取三月前的日期(当前日期往前推30天)(返回数值)
*
* @param date
* @return
*/
public static Integer get3MonthBeforeDateNum(Date date) { java.text.Format formatter = new java.text.SimpleDateFormat("yyyyMMdd"); long beforeTime = (date.getTime() / 1000) - 24 * 60 * 60 * 30 * 3; date.setTime(beforeTime * 1000); return Integer.parseInt(formatter.format(date)); } /**
* 获取一年后的日期
*
* @return
*/
public static String getNextYear(int chooseYear, Date date) { java.text.Format formatter = new java.text.SimpleDateFormat(
"yyyy-MM-dd"); long beforeTime = (date.getTime() / 1000) + 60 * 60 * 24 * 365
* chooseYear; date.setTime(beforeTime * 1000); return formatter.format(date);
} /**
* 日期转换成字符串
*
* @param date
* @return
*/
public static String convertDateToStr(Date date) {
java.text.Format formatter = new java.text.SimpleDateFormat(
"yyyy-MM-dd");
return formatter.format(date); } /**
* 日期转换成字符串 yyyy-MM-dd HHmmss
*
* @param date
* @return
*/
public static String convertTimeToStr(Date date) {
java.text.Format formatter = new java.text.SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
return formatter.format(date); } /**
* 将日期转为数值
*
* @param date
* @return
*/
public static Integer convertDateToNum(Date date) {
java.text.Format formatter = new java.text.SimpleDateFormat("yyyyMMdd");
return Integer.parseInt(formatter.format(date));
}
/**
* 将字符串日期转为数值
*
* @param date
* @return
*/
public static Integer convertStrToNum(String date) { if (date.contains("-")) {
date = date.replace("-", "");
} else if (date.contains(".")) {
date = date.replace(".", "");
} else if (date.contains("/")) {
date = date.replace("/", "");
} return Integer.parseInt(date);
} /**
* 时间转换器 第一个参数 要转化的数据类型 --- java.util.Date 第二个参数 要转化的数据 --- "2010-12-12"
*
*/
public static Date convertStrTODate( String str,Class<Date> type,String datePattern) { if (str == null) {
return null;
} else {
if (type == java.util.Date.class) {
if (str instanceof String) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(datePattern);
return sdf.parse(str);
} catch (ParseException e) {
throw new RuntimeException("您输入的数据格式不对");
}
} else {
throw new RuntimeException("您要转化的数据输入不是String类型");
}
} else {
throw new RuntimeException("您要转化的数据类型不对");
}
}
} /**
* 根据生日计算年龄
*
* @param birthDay
* @return
* @throws Exception
*/
public static int getAge(Date birthDay) throws Exception {
Calendar cal = Calendar.getInstance(); if (cal.before(birthDay)) {
throw new IllegalArgumentException(
"The birthDay is before Now.It's unbelievable!");
}
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH);
int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
cal.setTime(birthDay); int yearBirth = cal.get(Calendar.YEAR);
int monthBirth = cal.get(Calendar.MONTH);
int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH); int age = yearNow - yearBirth; if (monthNow <= monthBirth) {
if (monthNow == monthBirth) {
// monthNow==monthBirth
if (dayOfMonthNow < dayOfMonthBirth) {
age--;
} else {
// do nothing
}
} else {
// monthNow>monthBirth
age--;
}
} else {
// monthNow<monthBirth
// donothing
} return age;
}
///////////////////////////////////////根据时间段获取时间的集合//////////////////////////////////////////////////////////////////
public static List<String> getDateListBydates(String s1,String s2,String format) throws ParseException{
List<String>list=new ArrayList<String>();
//String s1 = "2012-02-01";
//String s2 = "2012-04-04";
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date begin=sdf.parse(s1);
Date end=sdf.parse(s2);
double between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒
double day=between/(24*3600);
for(int i = 0;i<=day;i++){
Calendar cd = Calendar.getInstance();
cd.setTime(sdf.parse(s1));
cd.add(Calendar.DATE, i);//增加一天
//cd.add(Calendar.MONTH, n);//增加一个月
log.info(sdf.format(cd.getTime()));
list.add(sdf.format(cd.getTime()));
}
return list;
}
//获取指定年月的总天数
public static int getLastDay(int year, int month) {
int day = 1;
Calendar cal = Calendar.getInstance();
cal.set(year,month - 1,day);
int last = cal.getActualMaximum(Calendar.DATE);
System.out.println(last);
return last;
}
//获取指定年月的日期
@SuppressWarnings("unchecked")
public static List<String> getDatesByMonth(int year, int month){
List<String> list=new ArrayList();
String yyyy=year+"";
String mm=month+"";
String dd="01";
if(month<10){
mm="0"+month;
}
int num=getLastDay(year, month);
for(int i=1;i<=num;i++){
if(i<10){
dd="0"+i;
}else{
dd=i+"";
}
list.add(yyyy+"-"+mm+"-"+dd);
System.out.println(yyyy+"-"+mm+"-"+dd);
}
return list;
}
/**
*
* @param datestr 解析字符串 如2014-04-1716:38:57
* @param sourceDateformat 源日期格式 如yyyy-MM-ddHH:mm:ss
* @param formatStr 要转换的日期格式 如(yyyy-MM-dd HH:mm:ss)
* @return
*/
public static String strTOdateTOStr(String datestr,String sourceDateformat,String targetDateformat){
// String str="2014-04-1716:38:57";
try {
SimpleDateFormat sourceFormat = new SimpleDateFormat(sourceDateformat);
SimpleDateFormat targetFormat = new SimpleDateFormat(targetDateformat);
return targetFormat.format(sourceFormat.parse(datestr));
} catch (Exception e) {
log.info("strTOdateTOStr:"+e);
}
return null; }
///////////////////////////////////////////////////////////////////////////////////////////////////////// public static void main(String[] args) throws Exception{
//getDatesByMonth(2013,2);
getDateListBydates("20130517","20130519","yyyyMMdd"); } }

java日期公共类的更多相关文章

  1. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  2. java日期工具类DateUtil-续一

    上篇文章中,我为大家分享了下DateUtil第一版源码,但就如同文章中所说,我发现了还存在不完善的地方,所以我又做了优化和扩展. 更新日志: 1.修正当字符串日期风格为MM-dd或yyyy-MM时,若 ...

  3. java日期工具类DateUtil-续二

    该版本是一次较大的升级,农历相比公历复杂太多(真佩服古人的智慧),虽然有规律,但涉及到的取舍.近似的感念太多,况且本身的概念就已经很多了,我在网上也是查阅了很多的资料,虽然找到一些计算的方法,但都有些 ...

  4. java日期工具类DateUtil

    一名优秀的程序员,不仅需要有着丰富解决问题的方案,还需要的便是代码的沉淀,这不仅有助于自己快速的开发程序,也有利于保证程序的健壮.那如何才能沉淀自己的”代码“呢?从自己编写util开始其实就是一个不错 ...

  5. Java日期处理类的相关使用

    java常用类-java日期处理类 Date类 Date类是jdk给我们提高的标准日期类,在java.util包下: 示例代码: import java.util.Date; public class ...

  6. Java 日期格式化工具类

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

  7. Java日期时间类

    日期时间类有三种: 一.java.util.Date:一般用于声明日期时间类型的变量. 二.java.sql.Date:一般用于数据库日期时间的映射. 三.java.util.Calendar:一般用 ...

  8. java 日期工具类DateUtils

      日期工具类DateUtils CreateTime--2017年5月27日08:48:00Author:Marydon DateUtils.java-对日期类的进一步封装 import java. ...

  9. JAVA 日期工具类的总结

    一般,在项目中,我们会会经常使用到日期的各种方式的处理,在各个业务逻辑操作中,都需要相关的日期操作,因此,实现项目中的日期工具类的提出,还是十分重要的,下面,就项目中常用到的日期的相关操作方式,做了一 ...

随机推荐

  1. jQuery实现鼠标经过图片预览大图效果

    jQuery:是一种客户端的技术,它的诞生的理由是:write less,do more(写更少的代码,做更多的事情). 因此,我们可以借助jQuery来实现一些很酷炫的效果,相比于javaScrip ...

  2. hdu 6154 CaoHaha's staff

    CaoHaha's staff Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  3. 硬盘安装CentOS 6.0(超级详细图文教程)

    硬盘安装CentOS 6.0(超级详细图文教程) 来源:   引言: 电脑系统是Windows XP,电脑没有光驱.手头没有U盘.没有移动硬盘.电脑主板不支持U盘启动,在这种情况下想安装CentOS ...

  4. <NET CLR via c# 第4版>笔记 第9章 参数

    9.1 可选参数和命名参数 class Program { private static int s_n = 0; private static void M(int x = 9, string s ...

  5. ubuntu14.04安装Android Studio出现error while loading shared libraries: libz.so.1的解决方法

    参考博客地址: http://blog.csdn.net/newairzhang/article/details/28656693 安装lib32z1就可以解决,如下: 首先,sudo apt-get ...

  6. linux提权辅助工具(四):LinEnum.sh

    来自:https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh #!/bin/bash #A script to e ...

  7. SQL中注意数据类型对性能的影响

    在数据存储的时候有时我们不太注意字符编码对性能影响,但小问题往往造成很大的影响.在数据量小的时候感觉不出来,一旦上到百万级以上的时候就非常明显了 看下面两个SQL语句 ---SQL1 SELECT * ...

  8. Leetcode 1022. Sum of Root To Leaf Binary Numbers

    dfs class Solution: def sumRootToLeaf(self, root: TreeNode) -> int: stack=[(root,0)] ans=[] bi_st ...

  9. Linux运维学习笔记-定时任务知识总结

    定时任务编辑规范流程: 重要知识点: 切记用全路径编写定时脚本.定时任务 大部分在 crontab 计划任务中都会年到未尾带 >/dev/null 2>&1,是什么意思呢? > ...

  10. pidgin-lwqq

    今天第一次用pidgin登上了qq,好神奇. 从网上看到的,说是pidgin发布了支持webqq协议的lwqq,按照解释之后安装了. 感觉好神奇啊. 一个绿色的小企鹅^^ 今天有看到了一个大牛,我觉得 ...