摘自:http://blog.csdn.net/cselmu9/article/details/8625530#t6

在开发中经常会使用到一些日期方面的操作,下面例子展示几个常用的操作。

1、取得指定日期是星期几

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

a、使用Calendar类

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)就行了。意思是【指定日期/时间解析是否不严格。进行不严格解析时,解析程序可以使用启发式的方法来解释与此对象的格式不精确匹配的输入。进行严格解析时,输入必须匹配此对象的格式。 】

Java中获取指定日为星期几及其他日期操作的更多相关文章

  1. java中获取日期和时间的方法总结

    1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下:  要使用 java.util.Date .获取当前时间的代码如下 Date date = new Date(); da ...

  2. JAVA中获取当前系统时间及格式转换

    JAVA中获取当前系统时间   一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; publi ...

  3. JAVA中获取当前系统时间

    一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowStrin ...

  4. java中获取系统属性以及环境变量

    java中获取系统属性以及环境变量 System.getEnv()和System.getProperties()的差别 从概念上讲,系统属性 和环境变量 都是名称与值之间的映射.两种机制都能用来将用户 ...

  5. Java中获取文件路径

    Java中获取文件路径 1.实例说明 (1)得到 ClassPath的绝对URI路径 Thread.currentThread().getContextClassLoader().getResourc ...

  6. java中获取系统的当前时间

    转自:http://www.cnblogs.com/Matrix54/archive/2012/05/01/2478158.html 一. 获取当前系统时间和日期并格式化输出: import java ...

  7. JAVA中生成指定位数随机数的方法总结

    JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 public static String getRandom1(int len) { int rs = ( ...

  8. Java中获取键盘输入值的三种方法

    Java中获取键盘输入值的三种方法     Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...

  9. JAVA中获取路径

    内容来自于snannan_268 关键字: java中获取路径 JAVA中获取路径: 1.jsp中取得路径:   以工程名为TEST为例: (1)得到包含工程名的当前页面全路径:request.get ...

随机推荐

  1. GBDT学习

    白话GBDT: https://blog.csdn.net/qq_26598445/article/details/80853873 优点: 预测精度高 适合低维数据 能处理非线性数据,该版本GBDT ...

  2. 学习笔记(一)--->《Java 8编程官方参考教程(第9版).pdf》:第一章到六章学习笔记

    注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.违者本人不负法律责任.违法者自负一切法律责任. ...

  3. Splay-Tree总结一:模拟队列

    伸展树是一种强大的数据结构,由于其特性,可以很好地模拟队列的插队等操作,而线段树解决这类问题通常需要转化一下,比较伤脑筋 而用伸展树的解决方法就是先建好一颗节点数等于队列长度的树,每个队列元素在队列中 ...

  4. python3 + selenium 之窗口切换

    窗口切换 此代码来源学习后对淘宝操作实践记录: 以下代码在Chrome61和IE11上正常运行,Firefox5.7上运行存在一些问题须改进,应该是火狐不兼容差link_text部分和循环经常报错,在 ...

  5. winform连接oracle时Oracle.DataAccess.dll版本问题 Silverlight

    1.通用TestOracle.zip部署到iis上,或直接运行程序测试当前全局程序集 protected void Button1_Click(object sender, EventArgs e) ...

  6. 解决在Pycharm中无法显示代码提示的问题

    #coding: utf-8from cx_Oracle.CURSOR import *import cx_Oracle conn= cx_Oracle.connect('XX', 'XX', '12 ...

  7. drupal的node.html.twig说明

    Drupal 8 根据分类不同定义自己的节点模板建议:http://www.thinkindrupal.com/node/5986 *可用变量: * - node:具有有限访问对象属性和方法的节点实体 ...

  8. js类型判断-丰富加好用

    一, 自己有时候写一些东西,要做类型判断,还有测试的时候,对于原生的和jQuery中的类型判断,实在不敢恭维,所以就写了一个好用的类型判断,一般情况都够用的. function test(type) ...

  9. 不一样的go语言之入门篇-Hello World

      这是<不一样的go语言>的开篇之作,我尝试以java语言转变者的角度来聊一聊go语言.所以今天先从go语言的基础开始,即语法.   学习一门新的编程语言,必从语法开始.但需要注意的是, ...

  10. springboot项目接入配置中心,实现@ConfigurationProperties的bean属性刷新方案

    前言 配置中心,通过key=value的形式存储环境变量.配置中心的属性做了修改,项目中可以通过配置中心的依赖(sdk)立即感知到.需要做的就是如何在属性发生变化时,改变带有@Configuratio ...