java代码的时间类,获取每年的第一天和最后一天

package com.fzl.util;

import java.sql.Timestamp;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.Locale;

public class DateUtil {

/**

* 默认日期格式

*/

public static String DEFAULT_FORMAT = "yyyy-MM-dd";

/**

* 格式化日期

* @param date 日期对象

* @return String 日期字符串

*/

public static String formatDate(Date date){

SimpleDateFormat f = new SimpleDateFormat(DEFAULT_FORMAT);

String sDate = f.format(date);

return sDate;

}

/**

* 获取当年的第一天

* @param year

* @return

*/

public static Date getCurrYearFirst(){

Calendar currCal=Calendar.getInstance();

int currentYear = currCal.get(Calendar.YEAR);

return getYearFirst(currentYear);

}

/**

* 获取当年的最后一天

* @param year

* @return

*/

public static Date getCurrYearLast(){

Calendar currCal=Calendar.getInstance();

int currentYear = currCal.get(Calendar.YEAR);

return getYearLast(currentYear);

}

/**

* 获取某年第一天日期

* @param year 年份

* @return Date

*/

public static Date getYearFirst(int year){

Calendar calendar = Calendar.getInstance();

calendar.clear();

calendar.set(Calendar.YEAR, year);

Date currYearFirst = calendar.getTime();

return currYearFirst;

}

/**

* 获取某年最后一天日期

* @param year 年份

* @return Date

*/

public static Date getYearLast(int year){

Calendar calendar = Calendar.getInstance();

calendar.clear();

calendar.set(Calendar.YEAR, year);

calendar.roll(Calendar.DAY_OF_YEAR, -1);

Date currYearLast = calendar.getTime();

return currYearLast;

}

public static String getAfterDay(String date,int num ){

//用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd ");

Date dt=null;

try{

//解析字符串的文本,生成 Date

dt=sdf.parse(date);

}

catch(Exception e){

e.printStackTrace();

}

//使用默认时区和语言环境获得一个日历。

Calendar calendar=Calendar.getInstance();

//使用给定的 Date 设置此 Calendar 的时间。

calendar.setTime(dt);

//根据日历的规则,为给定的日历字段添加或减去指定的时间量。

calendar.add(Calendar.DATE, num);

//用给定的模式和给定语言环境的默认日期格式符号构造 SimpleDateFormat

SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd",

Locale.ENGLISH);

//将给定的 Date 格式化为日期/时间字符串,

//calendar.getTime()返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。

return simpleDateFormat.format(calendar.getTime());

}

public static String getBeforeDate(int num){

//使用默认时区和语言环境获得一个日历。

Calendar calendar=Calendar.getInstance();

//new Date()分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)

calendar.setTime(new Date());

//根据日历的规则,为给定的日历字段添加或减去指定的时间量

calendar.add(Calendar.DATE, -num);

//用给定的模式和给定语言环境的默认日期格式符号构造 SimpleDateFormat

SimpleDateFormat simpleDateFormate=new SimpleDateFormat("yyyy-MM-dd",

Locale.ENGLISH);

return simpleDateFormate.format(calendar.getTime());

}

//获得当前的日期

public static String getdate(){

// 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)

Date dt=new Date();

//dt.getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

long tmlong=dt.getTime();

//分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,

//Date(tmlong)即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

return (new java.sql.Date(tmlong).toString());

}

//获得当前的日期时间,精确到时分秒,并转化为字符串的形式

public static String getDateTime(){

Date dt=new Date();

long tmlong=dt.getTime();

//Time(tmlong):使用毫秒时间值构造 Time 对象。

return (new java.sql.Date(tmlong)+" "+

(new java.sql.Time(tmlong))).toString();

}

//字符串转换成日期时间,不精确到时分秒

public static Date getStringToDate(String day){

//用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//HH是24小时制,hh是12小时制

SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");

Date dt = new Date();

try{

dt=sdf2.parse(day);

}

catch(Exception e){

e.printStackTrace();

}

// return new java.sql.Date(dt.getTime());

return dt;

}

//字符串转换成日期时间,精确到时分秒

public static Date getStringToDateTime(String day){

//用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//HH是24小时制,hh是12小时制

SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");

Date dt = new Date();

DateFormat df2 = DateFormat.getDateTimeInstance();//可以精确到时分秒

try{

dt=sdf2.parse(day);

}

catch(Exception e){

e.printStackTrace();

}

// return dt;

return new java.sql.Date(dt.getTime());

}

//判断字符串是否可以转换成date格式

public static boolean isValidDate(String s)

{

SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");

// 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,

//比如2007/02/29会被接受,并转换成2007/03/01

dateFormat.setLenient(false);

try

{

dateFormat.parse(s);

return true;

}

catch (Exception e)

{

// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对

return false;

}

}

//传入日期格式的时间,并将之转换成字符串

public static String dateToString(Date date){

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

String day=sdf.format(date);

return day;

}

//将util.date转化为java.sql.Timestamp,以免util.date存入数据库的时时分秒损失

//此方法可能没什么用

public static Timestamp getTimestamp(Date date) {

return new java.sql.Timestamp(date.getTime());

}

}