ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

日期获取星期

2021-11-06 11:02:36  阅读:178  来源: 互联网

标签:星期 week Date 获取 日期 cal date Calendar


Java中获取指定日为星期几及其他日期操作

1、取得指定日期是星期几
取得指定日期是星期几可以采用下面两种方式取得日期是星期几:

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”

2、取得日期是某年的第几周
根据日期入得日期是某年的第几周。

//取得日期是某年的第几周
	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;
	}

3、得到某年的某个月有多少天
已知年份和月份,取得该月有多少天。

//取得某个月有多少天
	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;
	}

5、完整的测试代码

package org.ml.test;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
 
public class CalendarDemo {
	public static void main(String[] args) {
		String strDate = "2013-03-08";// 定义日期字符串
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");// 定义日期格式
		Date date = null;
		try {
			date = format.parse(strDate);// 将字符串转换为日期
		} catch (ParseException e) {
			System.out.println("输入的日期格式不合理!");
		}
		System.out.println(strDate + "是:" + getWeek(date));
		System.out.println(strDate + "是一年的第:" + getWeekOfYear(date) + "周");
		System.out.println(strDate + "是一年的" + (date.getMonth() + 1) + "月有:"
				+ getDaysOfMonth(date.getYear(), date.getMonth() + 1) + "天");
		System.out.println(strDate + "距离" + (format.format(new Date())) + "还有"
				+ getDaysBetween(date, new Date()) + "天");
 
	}
 
	// 根据日期取得星期几
	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];
		SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
		String week = sdf.format(date);
		return week;
	}
 
	// 取得日期是某年的第几周
	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;
	}
 
	// 取得两个日期之间的相差多少天
	public static long getDaysBetween(Date date0, Date date1) {
		long daysBetween = (date0.getTime() - date1.getTime() + 1000000) / 86400000;// 86400000=3600*24*1000  用立即数,减少乘法计算的开销
		return daysBetween;
	}
 
}


6、测试结果

在这里插入图片描述
7、引出的问题

public static void main(String[] args) throws Exception{
    String strDate = "999-999-999";// 定义日期字符串
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");// 定义日期格式
    Date date = null;
try {
    date = format.parse(strDate);// 将字符串转换为日期
} catch (ParseException e) {
    System.out.println("日期格式有误,请给出正确的日期格式");
    return;
}
    System.out.println(format.format(date)); 
}

Java中使用yyyy-MM-dd日期格式进行转换,转换字符串为999-999-999时,没有出现异常,反倒是执行通过了。
运行结果:1084-11-23

解决办法如下:

在date = format.parse(strDate)前面加上format.setLenient(false)就行了。意思是【指定日期/时间解析是否不严格。进行不严格解析时,解析程序可以使用启发式的方法来解释与此对象的格式不精确匹配的输入。进行严格解析时,输入必须匹配此对象的格式。 】

原文链接:https://blog.csdn.net/cselmu9/article/details/8625530

标签:星期,week,Date,获取,日期,cal,date,Calendar
来源: https://blog.csdn.net/weixin_46649054/article/details/121175824

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有