java 获取 时间_Java获取各种常用时间方法

packagecom.hefeng.test;

importjava.text.DateFormat;

importjava.text.ParsePosition;

importjava.text.SimpleDateFormat;

importjava.util.Calendar;

importjava.util.Date;

importjava.util.GregorianCalendar;

publicclassTimeTest {

//用来全局控制 上一周,本周,下一周的周数变化

privateintweeks =0;

privateintMaxDate;//一月最大天数

privateintMaxYear;//一年最大天数

/**

* @param args

*/

publicstaticvoidmain(String[] args) {

TimeTest tt =newTimeTest();

System.out.println("获取当天日期:"+tt.getNowTime("yyyy-MM-dd"));

System.out.println("获取本周一日期:"+tt.getMondayOFWeek());

System.out.println("获取本周日的日期~:"+tt.getCurrentWeekday());

System.out.println("获取上周一日期:"+tt.getPreviousWeekday());

System.out.println("获取上周日日期:"+tt.getPreviousWeekSunday());

System.out.println("获取下周一日期:"+tt.getNextMonday());

System.out.println("获取下周日日期:"+tt.getNextSunday());

System.out.println("获得相应周的周六的日期:"+tt.getNowTime("yyyy-MM-dd"));

System.out.println("获取本月第一天日期:"+tt.getFirstDayOfMonth());

System.out.println("获取本月最后一天日期:"+tt.getDefaultDay());

System.out.println("获取上月第一天日期:"+tt.getPreviousMonthFirst());

System.out.println("获取上月最后一天的日期:"+tt.getPreviousMonthEnd());

System.out.println("获取下月第一天日期:"+tt.getNextMonthFirst());

System.out.println("获取下月最后一天日期:"+tt.getNextMonthEnd());

System.out.println("获取本年的第一天日期:"+tt.getCurrentYearFirst());

System.out.println("获取本年最后一天日期:"+tt.getCurrentYearEnd());

System.out.println("获取去年的第一天日期:"+tt.getPreviousYearFirst());

System.out.println("获取去年的最后一天日期:"+tt.getPreviousYearEnd());

System.out.println("获取明年第一天日期:"+tt.getNextYearFirst());

System.out.println("获取明年最后一天日期:"+tt.getNextYearEnd());

System.out.println("获取本季度第一天到最后一天:"+tt.getThisSeasonTime(11));

System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"+TimeTest.getTwoDay("2008-12-1","2008-9-29"));

}

/**

* 得到二个日期间的间隔天数

*/

publicstaticString getTwoDay(String sj1, String sj2) {

SimpleDateFormat myFormatter =newSimpleDateFormat("yyyy-MM-dd");

longday =0;

try{

java.util.Date date = myFormatter.parse(sj1);

java.util.Date mydate = myFormatter.parse(sj2);

day = (date.getTime() - mydate.getTime()) / (24*60*60*1000);

}catch(Exception e) {

return"";

}

returnday +"";

}

/**

* 根据一个日期,返回是星期几的字符串

*

* @param sdate

* @return

*/

publicstaticString getWeek(String sdate) {

// 再转换为时间

Date date = TimeTest.strToDate(sdate);

Calendar c = Calendar.getInstance();

c.setTime(date);

// int hour=c.get(Calendar.DAY_OF_WEEK);

// hour中存的就是星期几了,其范围 1~7

// 1=星期日 7=星期六,其他类推

returnnewSimpleDateFormat("EEEE").format(c.getTime());

}

/**

* 将短时间格式字符串转换为时间 yyyy-MM-dd

*

* @param strDate

* @return

*/

publicstaticDate strToDate(String strDate) {

SimpleDateFormat formatter =newSimpleDateFormat("yyyy-MM-dd");

ParsePosition pos =newParsePosition(0);

Date strtodate = formatter.parse(strDate, pos);

returnstrtodate;

}

/**

* 两个时间之间的天数

*

* @param date1

* @param date2

* @return

*/

publicstaticlonggetDays(String date1, String date2) {

if(date1 ==null|| date1.equals(""))

return0;

if(date2 ==null|| date2.equals(""))

return0;

// 转换为标准时间

SimpleDateFormat myFormatter =newSimpleDateFormat("yyyy-MM-dd");

java.util.Date date =null;

java.util.Date mydate =null;

try{

date = myFormatter.parse(date1);

mydate = myFormatter.parse(date2);

}catch(Exception e) {

}

longday = (date.getTime() - mydate.getTime()) / (24*60*60*1000);

returnday;

}

// 计算当月最后一天,返回字符串

publicString getDefaultDay(){

String str ="";

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

Calendar lastDate = Calendar.getInstance();

lastDate.set(Calendar.DATE,1);//设为当前月的1号

lastDate.add(Calendar.MONTH,1);//加一个月,变为下月的1号

lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天

str=sdf.format(lastDate.getTime());

returnstr;

}

// 上月第一天

publicString getPreviousMonthFirst(){

String str ="";

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

Calendar lastDate = Calendar.getInstance();

lastDate.set(Calendar.DATE,1);//设为当前月的1号

lastDate.add(Calendar.MONTH,-1);//减一个月,变为下月的1号

//lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天

str=sdf.format(lastDate.getTime());

returnstr;

}

//获取当月第一天

publicString getFirstDayOfMonth(){

String str ="";

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

Calendar lastDate = Calendar.getInstance();

lastDate.set(Calendar.DATE,1);//设为当前月的1号

str=sdf.format(lastDate.getTime());

returnstr;

}

// 获得本周星期日的日期

publicString getCurrentWeekday() {

weeks =0;

intmondayPlus =this.getMondayPlus();

GregorianCalendar currentDate =newGregorianCalendar();

currentDate.add(GregorianCalendar.DATE, mondayPlus+6);

Date monday = currentDate.getTime();

DateFormat df = DateFormat.getDateInstance();

String preMonday = df.format(monday);

returnpreMonday;

}

//获取当天时间

publicString getNowTime(String dateformat){

Date   now   =newDate();

SimpleDateFormat   dateFormat   =newSimpleDateFormat(dateformat);//可以方便地修改日期格式

String  hehe  = dateFormat.format(now);

returnhehe;

}

// 获得当前日期与本周日相差的天数

privateintgetMondayPlus() {

Calendar cd = Calendar.getInstance();

// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......

intdayOfWeek = cd.get(Calendar.DAY_OF_WEEK)-1;//因为按中国礼拜一作为第一天所以这里减1

if(dayOfWeek ==1) {

return0;

}else{

return1- dayOfWeek;

}

}

//获得本周一的日期

publicString getMondayOFWeek(){

weeks =0;

intmondayPlus =this.getMondayPlus();

GregorianCalendar currentDate =newGregorianCalendar();

currentDate.add(GregorianCalendar.DATE, mondayPlus);

Date monday = currentDate.getTime();

DateFormat df = DateFormat.getDateInstance();

String preMonday = df.format(monday);

returnpreMonday;

}

//获得相应周的周六的日期

publicString getSaturday() {

intmondayPlus =this.getMondayPlus();

GregorianCalendar currentDate =newGregorianCalendar();

currentDate.add(GregorianCalendar.DATE, mondayPlus +7* weeks +6);

Date monday = currentDate.getTime();

DateFormat df = DateFormat.getDateInstance();

String preMonday = df.format(monday);

returnpreMonday;

}

// 获得上周星期日的日期

publicString getPreviousWeekSunday() {

weeks=0;

weeks--;

intmondayPlus =this.getMondayPlus();

GregorianCalendar currentDate =newGregorianCalendar();

currentDate.add(GregorianCalendar.DATE, mondayPlus+weeks);

Date monday = currentDate.getTime();

DateFormat df = DateFormat.getDateInstance();

String preMonday = df.format(monday);

returnpreMonday;

}

// 获得上周星期一的日期

publicString getPreviousWeekday() {

weeks--;

intmondayPlus =this.getMondayPlus();

GregorianCalendar currentDate =newGregorianCalendar();

currentDate.add(GregorianCalendar.DATE, mondayPlus +7* weeks);

Date monday = currentDate.getTime();

DateFormat df = DateFormat.getDateInstance();

String preMonday = df.format(monday);

returnpreMonday;

}

// 获得下周星期一的日期

publicString getNextMonday() {

weeks++;

intmondayPlus =this.getMondayPlus();

GregorianCalendar currentDate =newGregorianCalendar();

currentDate.add(GregorianCalendar.DATE, mondayPlus +7);

Date monday = currentDate.getTime();

DateFormat df = DateFormat.getDateInstance();

String preMonday = df.format(monday);

returnpreMonday;

}

// 获得下周星期日的日期

publicString getNextSunday() {

intmondayPlus =this.getMondayPlus();

GregorianCalendar currentDate =newGregorianCalendar();

currentDate.add(GregorianCalendar.DATE, mondayPlus +7+6);

Date monday = currentDate.getTime();

DateFormat df = DateFormat.getDateInstance();

String preMonday = df.format(monday);

returnpreMonday;

}

privateintgetMonthPlus(){

Calendar cd = Calendar.getInstance();

intmonthOfNumber = cd.get(Calendar.DAY_OF_MONTH);

cd.set(Calendar.DATE,1);//把日期设置为当月第一天

cd.roll(Calendar.DATE, -1);//日期回滚一天,也就是最后一天

MaxDate=cd.get(Calendar.DATE);

if(monthOfNumber ==1){

return-MaxDate;

}else{

return1-monthOfNumber;

}

}

//获得上月最后一天的日期

publicString getPreviousMonthEnd(){

String str ="";

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

Calendar lastDate = Calendar.getInstance();

lastDate.add(Calendar.MONTH,-1);//减一个月

lastDate.set(Calendar.DATE,1);//把日期设置为当月第一天

lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天

str=sdf.format(lastDate.getTime());

returnstr;

}

//获得下个月第一天的日期

publicString getNextMonthFirst(){

String str ="";

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

Calendar lastDate = Calendar.getInstance();

lastDate.add(Calendar.MONTH,1);//减一个月

lastDate.set(Calendar.DATE,1);//把日期设置为当月第一天

str=sdf.format(lastDate.getTime());

returnstr;

}

//获得下个月最后一天的日期

publicString getNextMonthEnd(){

String str ="";

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

Calendar lastDate = Calendar.getInstance();

lastDate.add(Calendar.MONTH,1);//加一个月

lastDate.set(Calendar.DATE,1);//把日期设置为当月第一天

lastDate.roll(Calendar.DATE, -1);//日期回滚一天,也就是本月最后一天

str=sdf.format(lastDate.getTime());

returnstr;

}

//获得明年最后一天的日期

publicString getNextYearEnd(){

String str ="";

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

Calendar lastDate = Calendar.getInstance();

lastDate.add(Calendar.YEAR,1);//加一个年

lastDate.set(Calendar.DAY_OF_YEAR,1);

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

str=sdf.format(lastDate.getTime());

returnstr;

}

//获得明年第一天的日期

publicString getNextYearFirst(){

String str ="";

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

Calendar lastDate = Calendar.getInstance();

lastDate.add(Calendar.YEAR,1);//加一个年

lastDate.set(Calendar.DAY_OF_YEAR,1);

str=sdf.format(lastDate.getTime());

returnstr;

}

//获得本年有多少天

privateintgetMaxYear(){

Calendar cd = Calendar.getInstance();

cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天

cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。

intMaxYear = cd.get(Calendar.DAY_OF_YEAR);

returnMaxYear;

}

privateintgetYearPlus(){

Calendar cd = Calendar.getInstance();

intyearOfNumber = cd.get(Calendar.DAY_OF_YEAR);//获得当天是一年中的第几天

cd.set(Calendar.DAY_OF_YEAR,1);//把日期设为当年第一天

cd.roll(Calendar.DAY_OF_YEAR,-1);//把日期回滚一天。

intMaxYear = cd.get(Calendar.DAY_OF_YEAR);

if(yearOfNumber ==1){

return-MaxYear;

}else{

return1-yearOfNumber;

}

}

//获得本年第一天的日期

publicString getCurrentYearFirst(){

intyearPlus =this.getYearPlus();

GregorianCalendar currentDate =newGregorianCalendar();

currentDate.add(GregorianCalendar.DATE,yearPlus);

Date yearDay = currentDate.getTime();

DateFormat df = DateFormat.getDateInstance();

String preYearDay = df.format(yearDay);

returnpreYearDay;

}

//获得本年最后一天的日期 *

publicString getCurrentYearEnd(){

Date date =newDate();

SimpleDateFormat   dateFormat   =newSimpleDateFormat("yyyy");//可以方便地修改日期格式

String  years  = dateFormat.format(date);

returnyears+"-12-31";

}

//获得上年第一天的日期 *

publicString getPreviousYearFirst(){

Date date =newDate();

SimpleDateFormat   dateFormat   =newSimpleDateFormat("yyyy");//可以方便地修改日期格式

String  years  = dateFormat.format(date);intyears_value = Integer.parseInt(years);

years_value--;

returnyears_value+"-1-1";

}

//获得上年最后一天的日期

publicString getPreviousYearEnd(){

weeks--;

intyearPlus =this.getYearPlus();

GregorianCalendar currentDate =newGregorianCalendar();

currentDate.add(GregorianCalendar.DATE,yearPlus+MaxYear*weeks+(MaxYear-1));

Date yearDay = currentDate.getTime();

DateFormat df = DateFormat.getDateInstance();

String preYearDay = df.format(yearDay);

getThisSeasonTime(11);

returnpreYearDay;

}

//获得本季度

publicString getThisSeasonTime(intmonth){

intarray[][] = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};

intseason =1;

if(month>=1&&month<=3){

season =1;

}

if(month>=4&&month<=6){

season =2;

}

if(month>=7&&month<=9){

season =3;

}

if(month>=10&&month<=12){

season =4;

}

intstart_month = array[season-1][0];

intend_month = array[season-1][2];

Date date =newDate();

SimpleDateFormat   dateFormat   =newSimpleDateFormat("yyyy");//可以方便地修改日期格式

String  years  = dateFormat.format(date);

intyears_value = Integer.parseInt(years);

intstart_days =1;//years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);

intend_days = getLastDayOfMonth(years_value,end_month);

String seasonDate = years_value+"-"+start_month+"-"+start_days+";"+years_value+"-"+end_month+"-"+end_days;

returnseasonDate;

}

/**

* 获取某年某月的最后一天

* @param year 年

* @param month 月

* @return 最后一天

*/

privateintgetLastDayOfMonth(intyear,intmonth) {

if(month ==1|| month ==3|| month ==5|| month ==7|| month ==8

|| month ==10|| month ==12) {

return31;

}

if(month ==4|| month ==6|| month ==9|| month ==11) {

return30;

}

if(month ==2) {

if(isLeapYear(year)) {

return29;

}else{

return28;

}

}

return0;

}

/**

* 是否闰年

* @param year 年

* @return

*/

publicbooleanisLeapYear(intyear) {

return(year %4==0&& year %100!=0) || (year %400==0);

}

}

package com.bdvcd.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; /** * 文件名:DateUtils.java 日期处理相关工具类 * 版本信息:V1.0 * 日期:2013-03-11 * Copyright BDVCD Corporation 2013 * 版权所有 http://www.bdvcd.com */ public class DateUtils { /**定义常量**/ public static final String DATE_JFP_STR="yyyyMM"; public static final String DATE_FULL_STR = "yyyy-MM-dd HH:mm:ss"; public static final String DATE_SMALL_STR = "yyyy-MM-dd"; public static final String DATE_KEY_STR = "yyMMddHHmmss"; /** * 使用预设格式提取字符串日期 * @param strDate 日期字符串 * @return */ public static Date parse(String strDate) { return parse(strDate,DATE_FULL_STR); } /** * 使用用户格式提取字符串日期 * @param strDate 日期字符串 * @param pattern 日期格式 * @return */ public static Date parse(String strDate, String pattern) { SimpleDateFormat df = new SimpleDateFormat(pattern); try { return df.parse(strDate); } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 两个时间比较 * @param date * @return */ public static int compareDateWithNow(Date date1){ Date date2 = new Date(); int rnum =date1.compareTo(date2); return rnum; } /** * 两个时间比较(时间戳比较) * @param date * @return */ public static int compareDateWithNow(long date1){ long date2 = dateToUnixTimestamp(); if(date1>date2){ return 1; }else if(date1<date2){ return -1; }else{ return 0; } } /** * 获取系统当前时间 * @return */ public static String getNowTime() { SimpleDateFormat df = new SimpleDateFormat(DATE_FULL_STR); return df.format(new Date()); } /** * 获取系统当前时间 * @return */ public static String getNowTime(String type) { SimpleDateFormat df = new SimpleDateFormat(type); return df.format(new Date()); } /** * 获取系统当前计费期 * @return */ public static String getJFPTime() { SimpleDateFormat df = new SimpleDateFormat(DATE_JFP_STR); return df.format(new Date()); } /** * 将指定的日期转换成Unix时间戳 * @param String date 需要转换的日期 yyyy-MM-dd HH:mm:ss * @return long 时间戳 */ public static long dateToUnixTimestamp(String date) { long timestamp = 0; try { timestamp = new SimpleDateFormat(DATE_FULL_STR).parse(date).getTime(); } catch (ParseException e) { e.printStackTrace(); } return timestamp; } /** * 将指定的日期转换成Unix时间戳 * @param String date 需要转换的日期 yyyy-MM-dd * @return long 时间戳 */ public static long dateToUnixTimestamp(String date, String dateFormat) { long timestamp = 0; try { timestamp = new SimpleDateFormat(dateFormat).parse(date).getTime(); } catch (ParseException e) { e.printStackTrace(); } return timestamp; } /** * 将当前日期转换成Unix时间戳 * @return long 时间戳 */ public static long dateToUnixTimestamp() { long timestamp = new Date().getTime(); return timestamp; } /** * 将Unix时间戳转换成日期 * @param long timestamp 时间戳 * @return String 日期字符串 */ public static String unixTimestampToDate(long timestamp) { SimpleDateFormat sd = new SimpleDateFormat(DATE_FULL_STR); sd.setTimeZone(TimeZone.getTimeZone("GMT+8")); return sd.format(new Date(timestamp)); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值