import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import com.sinosoft.lis.pubfun.PubFun;
public class TimeTest {
/**
* @param args
*/
public static void main(String[] args) {
TimeTest tt=new TimeTest();
/* System.out.println(TimeTest.getTwoDay("2015-01-16", "2015-01-02"));
System.out.println(TimeTest.getWeek(new Date()));
System.out.println(TimeTest.getCurrentWeekday(7));
System.out.println(TimeTest.dateToStr(tt.getFirstDayOfMonth(), "yyyy-MM-dd"));
System.out.println(TimeTest.dateToStr(tt.getLastDayOfMonth(), "yyyy-MM-dd"));
System.out.println(TimeTest.dateToStr(tt.getFirstDayOfYear(), "yyyy-MM-dd"));*/
// System.out.println(TimeTest.dateToStr(tt.getLastDayOfYear(), "yyyy-MM-dd"));
// System.out.println(tt.isLeapYear("2014"));
GregorianCalendar sCalendar = new GregorianCalendar();
sCalendar.setTime(new Date());
int sYears = sCalendar.get(Calendar.YEAR);
int sMonths = sCalendar.get(Calendar.MONTH);
int sDays = sCalendar.get(Calendar.DAY_OF_MONTH);
System.out.println(sYears);
System.out.println(sMonths);
System.out.println(sDays);
}
/**
* 得到二个日期间的间隔天数 (date1-date2)
*/
public static String getTwoDay(String date1, String date2) {
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
long day = 0;
try {
java.util.Date dateBefore = myFormatter.parse(date1);
java.util.Date dateAfter = myFormatter.parse(date2);
day = (dateBefore.getTime() - dateAfter.getTime()) / (24 * 60 * 60 * 1000);
} catch (Exception e) {
return "";
}
return day + "";
}
/**
* 得到二个日期间的间隔天数 (date1-date2)
*/
public static String getTwoDay(Date date1, Date date2) {
long day = 0;
try {
day = (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000);
} catch (Exception e) {
return "";
}
return day + "";
}
/**
* 根据一个日期,返回是星期几的字符串
*
* @param sdate
* @return
*/
public static String getWeek(String sdate) {
// 再转换为时间
Date date = TimeTest.strToDate(sdate);
return new SimpleDateFormat("EEEE").format(date);
}
/**
* 根据一个日期,返回是星期几的字符串
*
* @param sdate
* @return
*/
public static String getWeek(Date sdate) {
return new SimpleDateFormat("EEEE").format(sdate);
}
/**
* 将短时间格式字符串转换为时间 yyyy-MM-dd
*
* @param strDate
* @return
*/
public static Date strToDate(String strDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
return strtodate;
}
/**
* 将日期转换为特定格式的字符串
*
* @param strDate
* @return
*/
public static String dateToStr(Date date,String format) {
SimpleDateFormat formatter = new SimpleDateFormat(format);
return formatter.format(date);
}
/**
* 获得本周几的日期
* **/
public static String getCurrentWeekday(int weekNum) {
String rDate="";
if(weekNum>0&&weekNum<8){
//获取今天是星期几
Calendar c=Calendar.getInstance();
int week= c.get(Calendar.DAY_OF_WEEK);
if(week==1){
week=7;
}else{
week--;
}
//获取星期weekNum的日期
c.setTime(new Date());
c.add(Calendar.DATE, weekNum-week);
rDate=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}
return rDate;
}
/**
* 获取本月第一天,返回Date
**/
public Date getFirstDayOfMonth(){
Calendar c=Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 1);
return c.getTime();
}
/**
* 获取本月最后一天,返回Date
***/
public Date getLastDayOfMonth(){
Calendar c = Calendar.getInstance();
c.set(Calendar.DATE,1);//设为当前月的1号
c.add(Calendar.MONTH,1);//加一个月,变为下月的1号
c.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
return c.getTime();
}
/**
* 获取本年第一天,返回Date
**/
public Date getFirstDayOfYear(){
Calendar c=Calendar.getInstance();
c.set(Calendar.DAY_OF_YEAR, 1);
return c.getTime();
}
/**
* 获取本年最后一天,返回Date
***/
public Date getLastDayOfYear(){
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_YEAR,1);//当年第一天
c.add(Calendar.YEAR,1);//加一年
c.add(Calendar.DATE,-1);//减去一天,
return c.getTime();
}
/**
* 获得本年有多少天
***/
public int getDaysOfYear(){
Calendar cd = Calendar.getInstance();
cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天
cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。
int MaxYear = cd.get(Calendar.DAY_OF_YEAR);
return MaxYear;
// GregorianCalendar gc=new GregorianCalendar();
// gc.setGregorianChange(new Date(Long.MIN_VALUE));
// String timeNow= new SimpleDateFormat("yyyy-MM-dd").format(new Date());
// int year=Integer.parseInt(timeNow.substring(0, 4));
// if(gc.isLeapYear(year)){
// return 366;
// }else{
// return 365;
// }
}
/**
* 获得某一年有多少天
***/
public int getDaysOfYear(String strYear){
//这种方法有误差
// Calendar c = Calendar.getInstance();
// String strDate=strYear+"-01-01";
// ParsePosition pos = new ParsePosition(0);
// c.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(strDate,pos));
// c.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。
// int MaxYear = c.get(Calendar.DAY_OF_YEAR);
// return MaxYear;
GregorianCalendar gc=new GregorianCalendar();
gc.setGregorianChange(new Date(Long.MIN_VALUE));
int year=Integer.parseInt(strYear);
if(gc.isLeapYear(year)){
return 366;
}else{
return 365;
}
}
/**
* 是否闰年
* @param year 年
* @return
*/
public boolean isLeapYear(int year) {
// return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
GregorianCalendar gc=new GregorianCalendar();
// 设置 GregorianCalendar 的更改日期。这是发生从儒略历日期切换到格里高利历日期的点。默认时间是 1582 年 10 月 15 日(格里高利历)。在此之前,日期是按照儒略历计算的。
// 要得到纯粹的儒略历日历,可将更改日期设置为 Date(Long.MAX_VALUE)。要得到一个纯粹的格里高利历日历,可将更改日期设置为 Date(Long.MIN_VALUE)。
gc.setGregorianChange(new Date(Long.MIN_VALUE));
return gc.isLeapYear(year);
}
/**
* 是否闰年
* @param year 年
* @return
*/
public boolean isLeapYear(String strYear) {
int year=Integer.parseInt(strYear);
GregorianCalendar gc=new GregorianCalendar();
gc.setGregorianChange(new Date(Long.MIN_VALUE));
return gc.isLeapYear(year);
}
}