如何php 取得当前日期期对应的季度

java取当前周期、月初至月末、季度初至季度末日期。 - ITeye问答
需求1: 当前登陆日期的周一至周五的日期 比如 现在是 周一是 周五就是 。
需求2: 月初至月末。 同上。 当前登陆的时间算出月初和月末的时间。
需求3: 季度初和季度末。 同上。 当前登陆时间算出季度的第一天和季度末的最后一天。
求函数。 谢谢。。 整了1天多没整出来。。。 时间不够了就上来发个需求。。
采纳的答案
我给你写了个,参考一下嘛:
Calendar calendar = new GregorianCalendar();
// 1. 当前登陆日期的周一至周五的日期 比如 现在是 周一是 周五就是 。
calendar.set(Calendar.DAY_OF_WEEK, 2);
System.out.println("登录日期的周一:" + print(calendar.getTime()));
// 2.星期五,第六天s
calendar.set(Calendar.DAY_OF_WEEK, 6);
System.out.println("登录日期的周五:" + print(calendar.getTime()));
// 3.当前月的第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
System.out.println("当前月的第一天:" + print(calendar.getTime()));
// 4.当前月的最后一天
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, 0);
System.out.println("当前月的最后一天:" + print(calendar.getTime()));
calendar.setTime(new Date());
int month = getQuarterInMonth(calendar.get(Calendar.MONTH), true);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, 1);
System.out.println("当季度的第一天:" + print(calendar.getTime()));
calendar.setTime(new Date());
month = getQuarterInMonth(calendar.get(Calendar.MONTH), false);
calendar.set(Calendar.MONTH, month + 1);
calendar.set(Calendar.DAY_OF_MONTH, 0);
System.out.println("当前时间的季度末:" + print(calendar.getTime()));
private static String print(Date d) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return df.format(d);
// 返回第几个月份,不是几月
// 季度一年四季, 第一季度:2月-4月, 第二季度:5月-7月, 第三季度:8月-10月, 第四季度:11月-1月
private static int getQuarterInMonth(int month, boolean isQuarterStart) {
int months[] = { 1, 4, 7, 10 };
if (!isQuarterStart) {
months = new int[] { 3, 6, 9, 12 };
if (month &= 2 && month &= 4)
return months[0];
else if (month &= 5 && month &= 7)
return months[1];
else if (month &= 8 && month &= 10)
return months[2];
return months[3];
去看下 joda-time.jar 吧
* 获取指定日期所在周的周一
* @Methods Name getMonday
* @return Date
public Date getMonday(Date date){
Calendar cDay = Calendar.getInstance();
cDay.setTime(date);
cDay.set(Calendar.DAY_OF_WEEK, 2);//老外将周日定位第一天,周一取第二天
return cDay.getTime();
* 获取指定日期所在周日
* @Methods Name getSunday
* @return Date
public Date getSunday(Date date){
Calendar cDay = Calendar.getInstance();
cDay.setTime(date);
if(Calendar.DAY_OF_WEEK==cDay.getFirstDayOfWeek()){ //如果刚好是周日,直接返回
}else{//如果不是周日,加一周计算
cDay.add(Calendar.DAY_OF_YEAR, 7);
cDay.set(Calendar.DAY_OF_WEEK, 1);
System.out.println(cDay.getTime());
return cDay.getTime();
* 得到本月第一天的日期
* @Methods Name getFirstDayOfMonth
* @return Date
public Date getFirstDayOfMonth(Date date)
Calendar cDay = Calendar.getInstance();
cDay.setTime(date);
cDay.set(Calendar.DAY_OF_MONTH, 1);
System.out.println(cDay.getTime());
return cDay.getTime();
* 得到本月最后一天的日期
* @Methods Name getLastDayOfMonth
* @return Date
public Date getLastDayOfMonth(Date date)
Calendar cDay = Calendar.getInstance();
cDay.setTime(date);
cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(cDay.getTime());
return cDay.getTime();
* 得到本季度第一天的日期
* @Methods Name getFirstDayOfQuarter
* @return Date
public Date getFirstDayOfQuarter(Date date)
Calendar cDay = Calendar.getInstance();
cDay.setTime(date);
int curMonth = cDay.get(Calendar.MONTH);
if (curMonth &= Calendar.JANUARY && curMonth &= Calendar.MARCH){
cDay.set(Calendar.MONTH, Calendar.JANUARY);
if (curMonth &= Calendar.APRIL && curMonth &= Calendar.JUNE){
cDay.set(Calendar.MONTH, Calendar.APRIL);
if (curMonth &= Calendar.JULY && curMonth &= Calendar.AUGUST) {
cDay.set(Calendar.MONTH, Calendar.JULY);
if (curMonth &= Calendar.OCTOBER && curMonth &= Calendar.DECEMBER) {
cDay.set(Calendar.MONTH, Calendar.OCTOBER);
cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMinimum(Calendar.DAY_OF_MONTH));
System.out.println(cDay.getTime());
return cDay.getTime();
* 得到本季度最后一天的日期
* @Methods Name getLastDayOfQuarter
* @return Date
public Date getLastDayOfQuarter(Date date)
Calendar cDay = Calendar.getInstance();
cDay.setTime(date);
int curMonth = cDay.get(Calendar.MONTH);
if (curMonth &= Calendar.JANUARY && curMonth &= Calendar.MARCH){
cDay.set(Calendar.MONTH, Calendar.MARCH);
if (curMonth &= Calendar.APRIL && curMonth &= Calendar.JUNE){
cDay.set(Calendar.MONTH, Calendar.JUNE);
if (curMonth &= Calendar.JULY && curMonth &= Calendar.AUGUST) {
cDay.set(Calendar.MONTH, Calendar.AUGUST);
if (curMonth &= Calendar.OCTOBER && curMonth &= Calendar.DECEMBER) {
cDay.set(Calendar.MONTH, Calendar.DECEMBER);
cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(cDay.getTime());
return cDay.getTime();
package com.bruce.test.
import java.text.DateF
import java.text.ParseP
import java.text.SimpleDateF
import java.util.C
import java.util.D
import java.util.GregorianC
* 常用日历操作辅助类
* @author steven
* @email:qing.
public class CalendarUtil {
private int weeks = 0;// 用来全局控制 上一周,本周,下一周的周数变化
private int MaxD // 一月最大天数
private int MaxY // 一年最大天数
* @param args
@SuppressWarnings("static-access")
public static void main(String[] args) {
CalendarUtil tt = new CalendarUtil();
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.getThisSeasonFirstTime(11));
System.out.println("获取本季度最后一天:" + tt.getThisSeasonFinallyTime(11));
System.out.println("获取两个日期之间间隔天数~:"
+ CalendarUtil.getTwoDay("", ""));
System.out.println("获取当前月的第几周:" + tt.getWeekOfMonth());
System.out.println("获取当前年份:" + tt.getYear());
System.out.println("获取当前月份:" + tt.getMonth());
System.out.println("获取今天在本年的第几天:" + tt.getDayOfYear());
System.out.println("获得今天在本月的第几天(获得当前日):" + tt.getDayOfMonth());
System.out.println("获得今天在本周的第几天:" + tt.getDayOfWeek());
System.out.println("获得半年后的日期:"
+ tt.convertDateToString(tt.getTimeYearNext()));
* 获得当前年份
public static int getYear() {
return Calendar.getInstance().get(Calendar.YEAR);
* 获得当前月份
public static int getMonth() {
return Calendar.getInstance().get(Calendar.MONTH) + 1;
* 获得今天在本年的第几天
public static int getDayOfYear() {
return Calendar.getInstance().get(Calendar.DAY_OF_YEAR);
* 获得今天在本月的第几天(获得当前日)
public static int getDayOfMonth() {
return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
* 获得今天在本周的第几天
public static int getDayOfWeek() {
return Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
* 获得今天是这个月的第几周
public static int getWeekOfMonth() {
return Calendar.getInstance().get(Calendar.DAY_OF_WEEK_IN_MONTH);
* 获得半年后的日期
public static Date getTimeYearNext() {
Calendar.getInstance().add(Calendar.DAY_OF_YEAR, 183);
return Calendar.getInstance().getTime();
* 将日期转换成字符串
* @param dateTime
public static String convertDateToString(Date dateTime) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return df.format(dateTime);
* 得到二个日期间的间隔天数
* @param sj1
* @param sj2
public static String getTwoDay(String sj1, String sj2) {
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
long day = 0;
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 "";
return day + "";
* 根据一个日期,返回是星期几的字符串
* @param sdate
public static String getWeek(String sdate) {
// 再转换为时间
Date date = CalendarUtil.strToDate(sdate);
Calendar c = Calendar.getInstance();
c.setTime(date);
// int hour=c.get(Calendar.DAY_OF_WEEK);
// hour中存的就是星期几了,其范围 1~7
// 1=星期日 7=星期六,其他类推
return new SimpleDateFormat("EEEE").format(c.getTime());
* 将短时间格式字符串转换为时间 yyyy-MM-dd
* @param strDate
public static Date strToDate(String strDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
* 两个时间之间的天数
* @param date1
* @param date2
public static long getDays(String date1, String date2) {
if (date1 == null || date1.equals(""))
if (date2 == null || date2.equals(""))
// 转换为标准时间
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date =
java.util.Date mydate =
date = myFormatter.parse(date1);
mydate = myFormatter.parse(date2);
} catch (Exception e) {
long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
* 计算当月最后一天,返回字符串
public String getDefaultDay() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("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());
* 上月第一天
public String getPreviousMonthFirst() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("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());
* 获取当月第一天
public String getFirstDayOfMonth() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
str = sdf.format(lastDate.getTime());
* 获得本周星期日的日期
public String getCurrentWeekday() {
weeks = 0;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获取当天时间
* @param dateformat
public String getNowTime(String dateformat) {
Date now = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式
String hehe = dateFormat.format(now);
* 获得当前日期与本周日相差的天数
private int getMondayPlus() {
Calendar cd = Calendar.getInstance();
// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 因为按中国礼拜一作为第一天所以这里减1
if (dayOfWeek == 1) {
return 1 - dayOfW
* 获得本周一的日期
public String getMondayOFWeek() {
weeks = 0;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获得相应周的周六的日期
public String getSaturday() {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获得上周星期日的日期
public String getPreviousWeekSunday() {
weeks = 0;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获得上周星期一的日期
public String getPreviousWeekday() {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获得下周星期一的日期
public String getNextMonday() {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获得下周星期日的日期
public String getNextSunday() {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 + 6);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
@SuppressWarnings("unused")
private int getMonthPlus() {
Calendar cd = Calendar.getInstance();
int monthOfNumber = 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 -MaxD
return 1 - monthOfN
* 获得上月最后一天的日期
public String getPreviousMonthEnd() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("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());
* 获得下个月第一天的日期
public String getNextMonthFirst() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.add(Calendar.MONTH, 1);// 减一个月
lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
str = sdf.format(lastDate.getTime());
* 获得下个月最后一天的日期
public String getNextMonthEnd() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("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());
* 获得明年最后一天的日期
public String getNextYearEnd() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("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());
* 获得明年第一天的日期
public String getNextYearFirst() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.add(Calendar.YEAR, 1);// 加一个年
lastDate.set(Calendar.DAY_OF_YEAR, 1);
str = sdf.format(lastDate.getTime());
* 获得本年有多少天
@SuppressWarnings("unused")
private int getMaxYear() {
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 MaxY
private int getYearPlus() {
Calendar cd = Calendar.getInstance();
int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);// 获得当天是一年中的第几天
cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天
cd.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滚一天。
int MaxYear = cd.get(Calendar.DAY_OF_YEAR);
if (yearOfNumber == 1) {
return -MaxY
return 1 - yearOfN
* 获得本年第一天的日期
public String getCurrentYearFirst() {
int yearPlus = this.getYearPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, yearPlus);
Date yearDay = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preYearDay = df.format(yearDay);
return preYearD
// 获得本年最后一天的日期 *
public String getCurrentYearEnd() {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
String years = dateFormat.format(date);
return years + "-12-31";
// 获得上年第一天的日期 *
public String getPreviousYearFirst() {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
String years = dateFormat.format(date);
int years_value = Integer.parseInt(years);
years_value--;
return years_value + "-1-1";
// 获得上年最后一天的日期
public String getPreviousYearEnd() {
int yearPlus = this.getYearPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, yearPlus + MaxYear * weeks
+ (MaxYear - 1));
Date yearDay = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preYearDay = df.format(yearDay);
return preYearD
* 获得本季度第一天
* @param month
public String getThisSeasonFirstTime(int month) {
int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
int season = 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;
int start_month = array[season - 1][0];
int end_month = array[season - 1][2];
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
String years = dateFormat.format(date);
int years_value = Integer.parseInt(years);
int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
@SuppressWarnings("unused")
int end_days = getLastDayOfMonth(years_value, end_month);
String seasonDate = years_value + "-" + start_month + "-" + start_
return seasonD
* 获得本季度最后一天
* @param month
@SuppressWarnings("unused")
public String getThisSeasonFinallyTime(int month) {
int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
int season = 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;
int start_month = array[season - 1][0];
int end_month = array[season - 1][2];
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
String years = dateFormat.format(date);
int years_value = Integer.parseInt(years);
int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
int end_days = getLastDayOfMonth(years_value, end_month);
String seasonDate = years_value + "-" + end_month + "-" + end_
return seasonD
* 获取某年某月的最后一天
* @param year
* @param month
* @return 最后一天
private int getLastDayOfMonth(int year, int month) {
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8
|| month == 10 || month == 12) {
return 31;
if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
if (month == 2) {
if (isLeapYear(year)) {
return 29;
return 28;
* 是否闰年
* @param year
public boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
* 是否闰年
* @param year
public boolean isLeapYear2(int year) {
return new GregorianCalendar().isLeapYear(year);
摘自网络,希望能帮助你
package com.bruce.test.
import java.text.DateF
import java.text.ParseP
import java.text.SimpleDateF
import java.util.C
import java.util.D
import java.util.GregorianC
* 常用日历操作辅助类
* @author steven
* @email:qing.
*/
public class CalendarUtil {
private int weeks = 0;// 用来全局控制 上一周,本周,下一周的周数变化
private int MaxD // 一月最大天数
private int MaxY // 一年最大天数
* @param args
@SuppressWarnings("static-access")
public static void main(String[] args) {
CalendarUtil tt = new CalendarUtil();
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.getThisSeasonFirstTime(11));
System.out.println("获取本季度最后一天:" + tt.getThisSeasonFinallyTime(11));
System.out.println("获取两个日期之间间隔天数~:"
+ CalendarUtil.getTwoDay("", ""));
System.out.println("获取当前月的第几周:" + tt.getWeekOfMonth());
System.out.println("获取当前年份:" + tt.getYear());
System.out.println("获取当前月份:" + tt.getMonth());
System.out.println("获取今天在本年的第几天:" + tt.getDayOfYear());
System.out.println("获得今天在本月的第几天(获得当前日):" + tt.getDayOfMonth());
System.out.println("获得今天在本周的第几天:" + tt.getDayOfWeek());
System.out.println("获得半年后的日期:"
+ tt.convertDateToString(tt.getTimeYearNext()));
* 获得当前年份
public static int getYear() {
return Calendar.getInstance().get(Calendar.YEAR);
* 获得当前月份
public static int getMonth() {
return Calendar.getInstance().get(Calendar.MONTH) + 1;
* 获得今天在本年的第几天
public static int getDayOfYear() {
return Calendar.getInstance().get(Calendar.DAY_OF_YEAR);
* 获得今天在本月的第几天(获得当前日)
public static int getDayOfMonth() {
return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
* 获得今天在本周的第几天
public static int getDayOfWeek() {
return Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
* 获得今天是这个月的第几周
public static int getWeekOfMonth() {
return Calendar.getInstance().get(Calendar.DAY_OF_WEEK_IN_MONTH);
* 获得半年后的日期
public static Date getTimeYearNext() {
Calendar.getInstance().add(Calendar.DAY_OF_YEAR, 183);
return Calendar.getInstance().getTime();
* 将日期转换成字符串
* @param dateTime
public static String convertDateToString(Date dateTime) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return df.format(dateTime);
* 得到二个日期间的间隔天数
* @param sj1
* @param sj2
public static String getTwoDay(String sj1, String sj2) {
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
long day = 0;
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 "";
return day + "";
* 根据一个日期,返回是星期几的字符串
* @param sdate
public static String getWeek(String sdate) {
// 再转换为时间
Date date = CalendarUtil.strToDate(sdate);
Calendar c = Calendar.getInstance();
c.setTime(date);
// int hour=c.get(Calendar.DAY_OF_WEEK);
// hour中存的就是星期几了,其范围 1~7
// 1=星期日 7=星期六,其他类推
return new SimpleDateFormat("EEEE").format(c.getTime());
* 将短时间格式字符串转换为时间 yyyy-MM-dd
* @param strDate
public static Date strToDate(String strDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatter.parse(strDate, pos);
* 两个时间之间的天数
* @param date1
* @param date2
public static long getDays(String date1, String date2) {
if (date1 == null || date1.equals(""))
if (date2 == null || date2.equals(""))
// 转换为标准时间
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date =
java.util.Date mydate =
date = myFormatter.parse(date1);
mydate = myFormatter.parse(date2);
} catch (Exception e) {
long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
* 计算当月最后一天,返回字符串
public String getDefaultDay() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("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());
* 上月第一天
public String getPreviousMonthFirst() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("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());
* 获取当月第一天
public String getFirstDayOfMonth() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
str = sdf.format(lastDate.getTime());
* 获得本周星期日的日期
public String getCurrentWeekday() {
weeks = 0;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获取当天时间
* @param dateformat
public String getNowTime(String dateformat) {
Date now = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式
String hehe = dateFormat.format(now);
* 获得当前日期与本周日相差的天数
private int getMondayPlus() {
Calendar cd = Calendar.getInstance();
// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 因为按中国礼拜一作为第一天所以这里减1
if (dayOfWeek == 1) {
return 1 - dayOfW
* 获得本周一的日期
public String getMondayOFWeek() {
weeks = 0;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获得相应周的周六的日期
public String getSaturday() {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获得上周星期日的日期
public String getPreviousWeekSunday() {
weeks = 0;
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获得上周星期一的日期
public String getPreviousWeekday() {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获得下周星期一的日期
public String getNextMonday() {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
* 获得下周星期日的日期
public String getNextSunday() {
int mondayPlus = this.getMondayPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 + 6);
Date monday = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preMonday = df.format(monday);
return preM
@SuppressWarnings("unused")
private int getMonthPlus() {
Calendar cd = Calendar.getInstance();
int monthOfNumber = 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 -MaxD
return 1 - monthOfN
* 获得上月最后一天的日期
public String getPreviousMonthEnd() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("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());
* 获得下个月第一天的日期
public String getNextMonthFirst() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.add(Calendar.MONTH, 1);// 减一个月
lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
str = sdf.format(lastDate.getTime());
* 获得下个月最后一天的日期
public String getNextMonthEnd() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("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());
* 获得明年最后一天的日期
public String getNextYearEnd() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("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());
* 获得明年第一天的日期
public String getNextYearFirst() {
String str = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar lastDate = Calendar.getInstance();
lastDate.add(Calendar.YEAR, 1);// 加一个年
lastDate.set(Calendar.DAY_OF_YEAR, 1);
str = sdf.format(lastDate.getTime());
* 获得本年有多少天
@SuppressWarnings("unused")
private int getMaxYear() {
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 MaxY
private int getYearPlus() {
Calendar cd = Calendar.getInstance();
int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);// 获得当天是一年中的第几天
cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天
cd.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滚一天。
int MaxYear = cd.get(Calendar.DAY_OF_YEAR);
if (yearOfNumber == 1) {
return -MaxY
return 1 - yearOfN
* 获得本年第一天的日期
public String getCurrentYearFirst() {
int yearPlus = this.getYearPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, yearPlus);
Date yearDay = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preYearDay = df.format(yearDay);
return preYearD
// 获得本年最后一天的日期 *
public String getCurrentYearEnd() {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
String years = dateFormat.format(date);
return years + "-12-31";
// 获得上年第一天的日期 *
public String getPreviousYearFirst() {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
String years = dateFormat.format(date);
int years_value = Integer.parseInt(years);
years_value--;
return years_value + "-1-1";
// 获得上年最后一天的日期
public String getPreviousYearEnd() {
int yearPlus = this.getYearPlus();
GregorianCalendar currentDate = new GregorianCalendar();
currentDate.add(GregorianCalendar.DATE, yearPlus + MaxYear * weeks
+ (MaxYear - 1));
Date yearDay = currentDate.getTime();
DateFormat df = DateFormat.getDateInstance();
String preYearDay = df.format(yearDay);
return preYearD
* 获得本季度第一天
* @param month
public String getThisSeasonFirstTime(int month) {
int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
int season = 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;
int start_month = array[season - 1][0];
int end_month = array[season - 1][2];
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
String years = dateFormat.format(date);
int years_value = Integer.parseInt(years);
int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
@SuppressWarnings("unused")
int end_days = getLastDayOfMonth(years_value, end_month);
String seasonDate = years_value + "-" + start_month + "-" + start_
return seasonD
* 获得本季度最后一天
* @param month
@SuppressWarnings("unused")
public String getThisSeasonFinallyTime(int month) {
int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
int season = 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;
int start_month = array[season - 1][0];
int end_month = array[season - 1][2];
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
String years = dateFormat.format(date);
int years_value = Integer.parseInt(years);
int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
int end_days = getLastDayOfMonth(years_value, end_month);
String seasonDate = years_value + "-" + end_month + "-" + end_
return seasonD
* 获取某年某月的最后一天
* @param year
*&&&&&&&&&&& 年
* @param month
*&&&&&&&&&&& 月
* @return 最后一天
private int getLastDayOfMonth(int year, int month) {
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8
|| month == 10 || month == 12) {
return 31;
if (month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
if (month == 2) {
if (isLeapYear(year)) {
return 29;
return 28;
* 是否闰年
* @param year
*&&&&&&&&&&& 年
public boolean isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
* 是否闰年
* @param year
public boolean isLeapYear2(int year) {
return new GregorianCalendar().isLeapYear(year);
摘自网络,希望能帮助你!
已解决问题
未解决问题}

我要回帖

更多关于 php 取得当前日期 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信