java日期公共类
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日期公共类的更多相关文章
- Java日期工具类,Java时间工具类,Java时间格式化
Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...
- java日期工具类DateUtil-续一
上篇文章中,我为大家分享了下DateUtil第一版源码,但就如同文章中所说,我发现了还存在不完善的地方,所以我又做了优化和扩展. 更新日志: 1.修正当字符串日期风格为MM-dd或yyyy-MM时,若 ...
- java日期工具类DateUtil-续二
该版本是一次较大的升级,农历相比公历复杂太多(真佩服古人的智慧),虽然有规律,但涉及到的取舍.近似的感念太多,况且本身的概念就已经很多了,我在网上也是查阅了很多的资料,虽然找到一些计算的方法,但都有些 ...
- java日期工具类DateUtil
一名优秀的程序员,不仅需要有着丰富解决问题的方案,还需要的便是代码的沉淀,这不仅有助于自己快速的开发程序,也有利于保证程序的健壮.那如何才能沉淀自己的”代码“呢?从自己编写util开始其实就是一个不错 ...
- Java日期处理类的相关使用
java常用类-java日期处理类 Date类 Date类是jdk给我们提高的标准日期类,在java.util包下: 示例代码: import java.util.Date; public class ...
- Java 日期格式化工具类
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- Java日期时间类
日期时间类有三种: 一.java.util.Date:一般用于声明日期时间类型的变量. 二.java.sql.Date:一般用于数据库日期时间的映射. 三.java.util.Calendar:一般用 ...
- java 日期工具类DateUtils
日期工具类DateUtils CreateTime--2017年5月27日08:48:00Author:Marydon DateUtils.java-对日期类的进一步封装 import java. ...
- JAVA 日期工具类的总结
一般,在项目中,我们会会经常使用到日期的各种方式的处理,在各个业务逻辑操作中,都需要相关的日期操作,因此,实现项目中的日期工具类的提出,还是十分重要的,下面,就项目中常用到的日期的相关操作方式,做了一 ...
随机推荐
- HDU 4122 单调队列
转载自:http://blog.csdn.net/lvshubao1314/article/details/46910271 DES :给出n个订单和m是商店的开放时间.然后n行给出n个订单的信息.然 ...
- Android 遍历全国的地区二(获取天气)
根据上次的内容 1. 界面布局 weather_layout.xml <LinearLayout xmlns:android="http://schemas.android.com/a ...
- IE兼容BUG汇总及解决方案(持续更新)
本篇为总结开发过程当中遇到的各种IE兼容性的小问题,比较复杂的会单开一篇文章来讲解. 另:我手头目前只有原生IE8,原生IE9,原生IE11,以及IE11模拟的IE5,7,8,9,10.因IE6太过古 ...
- [转载]java中的标号:outer的作用
转载自:http://blog.sina.com.cn/s/blog_6f8bd746010136yr.html 标号label 标号提供了一种简单的break语句所不能实现的控制循环的方法,当在循环 ...
- C# 后台线程更新UI控件
/********************************************************************************* * C# 后台线程更新UI控件 * ...
- BZOJ3033: 太鼓达人(欧拉回路)
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 524 Solved: 400[Submit][Status][Discuss] Description ...
- Redis学习笔记-常用命令篇(Centos7)
redis提供了丰富的命令,这些命令可以在linux终端使用.在各类语言中,这些命令都有对应的方法. 一.键值相关 1.keys 返回满足给定pattern的所有key 127.0.0.1:6379& ...
- test20181021 快速排序
题意 对于100%的数据,\(n,m \leq 10^5\) 分析 考场上打挂了. 最大值就是后半部分和减前半部分和. 最小是就是奇偶相减. 方案数类似进出栈序,就是catalan数 线段树维护即可, ...
- Tomcat调优总结(Tomcat自身优化、Linux内核优化、JVM优化)
Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置.首先是对这几个参数的含义要有深刻而清楚的理解.以tomcat8.5为例,讲解参数. 同时也得认识到一点,tomcat调 ...
- SAP MM模块 经常使用Bapi
1.sap货物移动相关的bapi(MIGO/MB1A) 货物移动的bapi BAPI_GOODSMVT_CREATE 当中 參数 : GOODSMVT_CODE 有 GMCODE Table T ...