java使用Calendar类获得指定日期
???关于指定日期的获取,是根据指定日期和当前日期相差的天数,然后使用set方法设置Calendar.DAY_OF_MONTH的值。
? ? Calendar cal = Calendar.getInstance();
? ? cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - dayPlus);
? ? (dayPlus表示指定日期和当前日期相差的天数)
? ? 不进行set,默认是获取系统时间,初步测试没有问题,可正确获得指定日期。
? ? *************************************************************************************************
? ? 代码:
? ? // 获得当前日期
? ? public static String getDate() {
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???return getDate(cal);
? ? }
? ? // 获得日期
? ? private static String getDate(Calendar cal) {
? ?? ???String v_strDate = "";
? ?? ???int v_intYear = cal.get(Calendar.YEAR);
? ?? ???int v_intMonth = cal.get(Calendar.MONTH) + 1;
? ?? ???int v_intDAY = cal.get(Calendar.DAY_OF_MONTH);
? ?? ???int v_intHOUR = cal.get(Calendar.HOUR_OF_DAY);
? ?? ???int v_intMINUTE = cal.get(Calendar.MINUTE);
? ?? ???int v_intSECOND = cal.get(Calendar.SECOND);
? ?? ???
? ?? ???if (v_intDAY < 10) {
? ?? ?? ?? ?v_strDate = v_strDate + "0" + v_intDAY + "-";
? ?? ???}else {
? ?? ?? ?? ?v_strDate = v_strDate + v_intDAY + "-";
? ?? ???}
? ?? ???if (v_intMonth < 10) {
? ?? ?? ?? ?v_strDate = v_strDate + "0" + v_intMonth + "-";
? ?? ???}else {
? ?? ?? ?? ?v_strDate = v_strDate + v_intMonth + "-";
? ?? ???}
? ?? ???v_strDate = v_strDate + v_intYear + " ";
? ?? ???
? ?? ???if (v_intHOUR < 10) {
? ?? ?? ?? ?v_strDate = v_strDate + "0" + v_intHOUR + ":";
? ?? ???}else {
? ?? ?? ?? ?v_strDate = v_strDate + v_intHOUR + ":";
? ?? ???}
? ?? ???if (v_intMINUTE < 10) {
? ?? ?? ?? ?v_strDate = v_strDate + "0" + v_intMINUTE + ":";
? ?? ???} else {
? ?? ?? ?? ?v_strDate = v_strDate + v_intMINUTE + ":";
? ?? ???}
? ?? ???if (v_intSECOND < 10) {
? ?? ?? ?? ?v_strDate = v_strDate + "0" + v_intSECOND;
? ?? ???} else {
? ?? ?? ?? ?v_strDate = v_strDate + v_intSECOND;
? ?? ???}
? ?? ???cal = null;
? ?? ???return v_strDate;
? ? }
? ? //获得当前日期与本周日相差的天数
? ? private static int getMondayPlus() {
? ?? ???Calendar cd = Calendar.getInstance();
? ?? ???// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
? ?? ???int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 因为按中国礼拜一作为第一天所以这里减1
? ?? ???if (dayOfWeek == 1) {
? ?? ?? ?? ?return 0;
? ?? ???} else {
? ?? ?? ?? ?return dayOfWeek - 1;
? ?? ???}
? ? }
? ? //获得本周一的日期
? ? public static String getThisMondayDate() {
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???int mondayPlus = getMondayPlus();
? ?? ???cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH)-mondayPlus);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 0);
? ?? ???cal.set(Calendar.MINUTE, 0);
? ?? ???cal.set(Calendar.SECOND, 0);
? ?? ???return getDate(cal);
? ? }
? ?
? ? //获得本月1号的日期
? ? public static String getCurrentMonthBeginDate(){
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???cal.set(Calendar.DAY_OF_MONTH, 1);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 0);
? ?? ???cal.set(Calendar.MINUTE, 0);
? ?? ???cal.set(Calendar.SECOND, 0);
? ?? ???return getDate(cal);
? ? }
? ?
? ? //获得上周一的日期
? ? public static String getLastMondayDate(){
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???int dayPlus = getMondayPlus()+7;
? ?? ???cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH)-dayPlus);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 0);
? ?? ???cal.set(Calendar.MINUTE, 0);
? ?? ???cal.set(Calendar.SECOND, 0);
? ?? ???return getDate(cal);
? ? }
? ?
? ? //获得上周日的日期
? ? public static String getLastSundayDate(){
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???int dayPlus = getMondayPlus()+1;
? ?? ???cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH)-dayPlus);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 23);
? ?? ???cal.set(Calendar.MINUTE, 59);
? ?? ???cal.set(Calendar.SECOND, 59);
? ?? ???return getDate(cal);
? ? }
? ?
? ? //获得上月1号的日期
? ? public static String getLastMonthBeginDate(){
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)-1);
? ?? ???cal.set(Calendar.DAY_OF_MONTH,1);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 0);
? ?? ???cal.set(Calendar.MINUTE, 0);
? ?? ???cal.set(Calendar.SECOND, 0);
? ?? ???return getDate(cal);
? ? }
? ?
? ? //获得上个月最后一天的日期
? ? public static String getLastMonthEndDate(){
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???cal.set(Calendar.DAY_OF_MONTH, 0);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 23);
? ?? ???cal.set(Calendar.MINUTE, 59);
? ?? ???cal.set(Calendar.SECOND, 59);
? ?? ???return getDate(cal);
? ? }
? ? public static void main(String[] args) {
? ?? ???System.out.println(getDate());
? ?? ???System.out.println(getThisMondayDate());
? ?? ???System.out.println(getCurrentMonthBeginDate());
? ?? ???System.out.println(getLastMondayDate());
? ?? ???System.out.println(getLastSundayDate());
? ?? ???System.out.println(getLastMonthBeginDate());
? ?? ???System.out.println(getLastMonthEndDate());
? ? }
? ? Calendar cal = Calendar.getInstance();
? ? cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) - dayPlus);
? ? (dayPlus表示指定日期和当前日期相差的天数)
? ? 不进行set,默认是获取系统时间,初步测试没有问题,可正确获得指定日期。
? ? *************************************************************************************************
? ? 代码:
? ? // 获得当前日期
? ? public static String getDate() {
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???return getDate(cal);
? ? }
? ? // 获得日期
? ? private static String getDate(Calendar cal) {
? ?? ???String v_strDate = "";
? ?? ???int v_intYear = cal.get(Calendar.YEAR);
? ?? ???int v_intMonth = cal.get(Calendar.MONTH) + 1;
? ?? ???int v_intDAY = cal.get(Calendar.DAY_OF_MONTH);
? ?? ???int v_intHOUR = cal.get(Calendar.HOUR_OF_DAY);
? ?? ???int v_intMINUTE = cal.get(Calendar.MINUTE);
? ?? ???int v_intSECOND = cal.get(Calendar.SECOND);
? ?? ???
? ?? ???if (v_intDAY < 10) {
? ?? ?? ?? ?v_strDate = v_strDate + "0" + v_intDAY + "-";
? ?? ???}else {
? ?? ?? ?? ?v_strDate = v_strDate + v_intDAY + "-";
? ?? ???}
? ?? ???if (v_intMonth < 10) {
? ?? ?? ?? ?v_strDate = v_strDate + "0" + v_intMonth + "-";
? ?? ???}else {
? ?? ?? ?? ?v_strDate = v_strDate + v_intMonth + "-";
? ?? ???}
? ?? ???v_strDate = v_strDate + v_intYear + " ";
? ?? ???
? ?? ???if (v_intHOUR < 10) {
? ?? ?? ?? ?v_strDate = v_strDate + "0" + v_intHOUR + ":";
? ?? ???}else {
? ?? ?? ?? ?v_strDate = v_strDate + v_intHOUR + ":";
? ?? ???}
? ?? ???if (v_intMINUTE < 10) {
? ?? ?? ?? ?v_strDate = v_strDate + "0" + v_intMINUTE + ":";
? ?? ???} else {
? ?? ?? ?? ?v_strDate = v_strDate + v_intMINUTE + ":";
? ?? ???}
? ?? ???if (v_intSECOND < 10) {
? ?? ?? ?? ?v_strDate = v_strDate + "0" + v_intSECOND;
? ?? ???} else {
? ?? ?? ?? ?v_strDate = v_strDate + v_intSECOND;
? ?? ???}
? ?? ???cal = null;
? ?? ???return v_strDate;
? ? }
? ? //获得当前日期与本周日相差的天数
? ? private static int getMondayPlus() {
? ?? ???Calendar cd = Calendar.getInstance();
? ?? ???// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
? ?? ???int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 因为按中国礼拜一作为第一天所以这里减1
? ?? ???if (dayOfWeek == 1) {
? ?? ?? ?? ?return 0;
? ?? ???} else {
? ?? ?? ?? ?return dayOfWeek - 1;
? ?? ???}
? ? }
? ? //获得本周一的日期
? ? public static String getThisMondayDate() {
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???int mondayPlus = getMondayPlus();
? ?? ???cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH)-mondayPlus);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 0);
? ?? ???cal.set(Calendar.MINUTE, 0);
? ?? ???cal.set(Calendar.SECOND, 0);
? ?? ???return getDate(cal);
? ? }
? ?
? ? //获得本月1号的日期
? ? public static String getCurrentMonthBeginDate(){
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???cal.set(Calendar.DAY_OF_MONTH, 1);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 0);
? ?? ???cal.set(Calendar.MINUTE, 0);
? ?? ???cal.set(Calendar.SECOND, 0);
? ?? ???return getDate(cal);
? ? }
? ?
? ? //获得上周一的日期
? ? public static String getLastMondayDate(){
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???int dayPlus = getMondayPlus()+7;
? ?? ???cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH)-dayPlus);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 0);
? ?? ???cal.set(Calendar.MINUTE, 0);
? ?? ???cal.set(Calendar.SECOND, 0);
? ?? ???return getDate(cal);
? ? }
? ?
? ? //获得上周日的日期
? ? public static String getLastSundayDate(){
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???int dayPlus = getMondayPlus()+1;
? ?? ???cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH)-dayPlus);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 23);
? ?? ???cal.set(Calendar.MINUTE, 59);
? ?? ???cal.set(Calendar.SECOND, 59);
? ?? ???return getDate(cal);
? ? }
? ?
? ? //获得上月1号的日期
? ? public static String getLastMonthBeginDate(){
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)-1);
? ?? ???cal.set(Calendar.DAY_OF_MONTH,1);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 0);
? ?? ???cal.set(Calendar.MINUTE, 0);
? ?? ???cal.set(Calendar.SECOND, 0);
? ?? ???return getDate(cal);
? ? }
? ?
? ? //获得上个月最后一天的日期
? ? public static String getLastMonthEndDate(){
? ?? ???Calendar cal = Calendar.getInstance();
? ?? ???cal.set(Calendar.DAY_OF_MONTH, 0);
? ?? ???cal.set(Calendar.HOUR_OF_DAY, 23);
? ?? ???cal.set(Calendar.MINUTE, 59);
? ?? ???cal.set(Calendar.SECOND, 59);
? ?? ???return getDate(cal);
? ? }
? ? public static void main(String[] args) {
? ?? ???System.out.println(getDate());
? ?? ???System.out.println(getThisMondayDate());
? ?? ???System.out.println(getCurrentMonthBeginDate());
? ?? ???System.out.println(getLastMondayDate());
? ?? ???System.out.println(getLastSundayDate());
? ?? ???System.out.println(getLastMonthBeginDate());
? ?? ???System.out.println(getLastMonthEndDate());
? ? }