取得指定日期是星期几

a、使用Calendar类
//根据日期取得星期几
public static String getWeek(Date date){
String[] weeks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
if(week_index<0){
week_index = 0;
}
return weeks[week_index];
}

 

 

b、使用SimpleDateFormat类
//根据日期取得星期几
public static String getWeek(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
String week = sdf.format(date);
return week;
}
注:格式化字符串存在区分大小写
对于创建SimpleDateFormat传入的参数:EEEE代表星期,如“星期四”;MMMM代表中文月份,如“十一月”;MM代表月份,如“11”;
yyyy代表年份,如“2010”;dd代表天,如“25”
 

取得日期是某年的第几周

根据日期入得日期是某年的第几周。
//取得日期是某年的第几周
public static int getWeekOfYear(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int week_of_year = cal.get(Calendar.WEEK_OF_YEAR);
return week_of_year;
}

得到某年的某个月有多少天

已知年份和月份,取得该月有多少天。
//取得某个月有多少天
public static int getDaysOfMonth(int year,int month){
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month-1);
int days_of_month = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
return days_of_month;
}

4、取得两个日期之间的相差多少天

已知两个日期,计算它们之间相差多少天。
// 取得两个日期之间的相差多少天
public static long getDaysBetween(Date date0, Date date1) {
long daysBetween = (date0.getTime() - date1.getTime() + 1000000) / 86400000;// 86400000=3600*24*1000 用立即数,减少乘法计算的开销
return daysBetween;
}

/**
 * 两个时间之间的天差
 * @param endDate
 * @param startDate
 * @return
 */
public static Integer getDateBetweenDay(Date startDate ,Date endDate) {

    long nd = 1000 * 24 * 60 * 60;
    // long ns = 1000;
    // 获得两个时间的毫秒时间差异
    long diff = endDate.getTime() - startDate.getTime();
    // 计算差多少天
    long day = diff / nd;
    int betweenday = (int)day;
    return betweenday;
}
/**
 * 两个时间之间的小时差
 * @param endDate
 * @param startDate
 * @return
 */
public static Integer getDateBetweenMinute(Date startDate ,Date endDate) {

    long interval = (endDate.getTime() - startDate.getTime())/1000;

    return Integer.parseInt(String.valueOf(interval));
}

/**
 * 两个时间之间的分差
 * @param endDate
 * @param startDate
 * @return
 */
public static Integer getDateMinutesBetweenMinute(Date startDate ,Date endDate) {

    long interval = (endDate.getTime() - startDate.getTime())/(1000* 60);

    return Integer.parseInt(String.valueOf(interval));
}
  /**
     * 两个时间之间的小时分钟差
     * @param endDate
     * @param startDate
     * @return
     */
    public static String getDatePoor(Date startDate ,Date endDate) {

        long nd = 1000 * 24 * 60 * 60;
        long nh = 1000 * 60 * 60;
        long nm = 1000 * 60;
        // long ns = 1000;
        // 获得两个时间的毫秒时间差异
        long diff = endDate.getTime() - startDate.getTime();
        // 计算差多少天
        long day = diff / nd;
        // 计算差多少小时
        long hour = diff % nd / nh;
        // 计算差多少分钟
        long min = diff % nd % nh / nm;
        // 计算差多少秒//输出结果
        // long sec = diff % nd % nh % nm / ns;
//        return day + "天" + hour + "小时" + min + "分钟";
        return hour + "小时" + min + "分钟";
    }
/**
 * 获取一年中第几天 date类型YYmmdd
 *
 * @param date
 * @return
 */
public static int getTheNthDayOfYear(String date) {
    int nthDay = 0;
    int year = Integer.parseInt(date.substring(0, 4));
    int month = Integer.parseInt(date.substring(4, 6));
    int day = Integer.parseInt(date.substring(6, 8));
    for (int i = 1; i < month; i++) {
        switch (i) {
            case 1:
                nthDay += 31;
                break;
            case 2:
                if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
                    nthDay += 29;
                } else {
                    nthDay += 28;
                }
                break;
            case 3:
                nthDay += 31;
                break;
            case 4:
                nthDay += 30;
                break;
            case 5:
                nthDay += 31;
                break;
            case 6:
                nthDay += 30;
                break;
            case 7:
                nthDay += 31;
                break;
            case 8:
                nthDay += 31;
                break;
            case 9:
                nthDay += 30;
                break;
            case 10:
                nthDay += 31;
                break;
            case 11:
                nthDay += 30;
                break;
            case 12:
                nthDay += 31;
                break;
                default:break;
        }
    }
    nthDay += day;

    return nthDay;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值