Java中Date类型详解
一、Date类型的初始化
1、 Date(int year, int month, int date); 直接写入年份是得不到正确的结果的。 因为java中Date是从1900年开始算的,所以前面的第一个参数只要填入从1900年后过了多少年就是你想要得到的年份。 月需要减1,日可以直接插入。 这种方法用的比较少,常用的是第二种方法。
2、 这种方法是将一个符合特定格式,比如yyyy-MM-dd,的字符串转化成为Date类型的数据。 首先,定义一个Date类型的对象 Date date = null; 再定义一个String类型的符合格式的字符串 String dateStr = "2010-9-10"; 把这个字符串进行拆分 String[ ] dateDivide = dateStr.split("-"); 把年月日分别取出,赋给Calendar,用 Calendar的getTime();取得日期再赋给date。
例如:
if(dateDivide.length==3){
int year = Integer.parseInt(dateDivide [0].trim());//去掉空格
int month = Integer.parseInt(dateDivide [1].trim());
int day = Integer.parseInt(dateDivide [2].trim());
Calendar c = Calendar.getInstance();//获取一个日历实例
c.set(year, month-1, day);//设定日历的日期
date = c.getTime();
}
二、Date类型的比较
Date a;
Date b;
假设现在你已经实例化了a和b
a.after(b)返回一个boolean,如果a的时间在b之后(不包括等于)返回true
b.before(a)返回一个boolean,如果b的时间在a之前(不包括等于)返回true
a.equals(b)返回一个boolean,如果a的时间和b相等返回true
三、Date类型常用的操作函数
// 1.计算某一月份的最大天数
Calendar time = Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR, year); // year 为 int
time.set(Calendar.MONTH, i - 1);// 注意,Calendar对象默认一月为0
int day = time.getActualMaximum(Calendar.DAY_OF_MONTH);// 本月份的天数
// 注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
// 2.Calendar和Date的转化
// (1) Calendar转化为Date Calendar
cal = Calendar.getInstance();
Date date = cal.getTime();
// (2) Date转化为Calendar
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 3.格式化输出日期时间(这个用的比较多)
Date date = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time = df.format(date);
System.out.println(time);
// 4.计算一年中的第几星期
// (1)计算某一天是一年中的第几星期
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno = cal.get(Calendar.WEEK_OF_YEAR);
// (2)计算一年中的第几星期是几号
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));//输出:2006-01-02
// 5.add()和roll()的用法(不太常用)
// (1)add()方法
SimpleDateFormat df=newSimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 8);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.add(Calendar.DATE, -4);
Date date = cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE, 4);
date = cal.getTime();
System.out.println(df.format(date));//输出:2006-08-30 2006-09-03
//(2)roll方法
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH,8);
cal.set(Calendar.DAY_OF_MONTH,3);
cal.roll(Calendar.DATE, -4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE,4);
date=cal.getTime();
System.out.println(df.format(date));//输出:2006-09-292006-09-03
// 可见,roll()方法在本月内循环,一般使用add()方法;
一、Date类型的初始化
1、 Date(int year, int month, int date); 直接写入年份是得不到正确的结果的。 因为java中Date是从1900年开始算的,所以前面的第一个参数只要填入从1900年后过了多少年就是你想要得到的年份。 月需要减1,日可以直接插入。 这种方法用的比较少,常用的是第二种方法。
2、 这种方法是将一个符合特定格式,比如yyyy-MM-dd,的字符串转化成为Date类型的数据。 首先,定义一个Date类型的对象 Date date = null; 再定义一个String类型的符合格式的字符串 String dateStr = "2010-9-10"; 把这个字符串进行拆分 String[ ] dateDivide = dateStr.split("-"); 把年月日分别取出,赋给Calendar,用 Calendar的getTime();取得日期再赋给date。
例如:
|
1
2
3
4
5
6
7
8
|
if(dateDivide.length==3){ int year = Integer.parseInt(dateDivide [0].trim());//去掉空格 int month = Integer.parseInt(dateDivide [1].trim()); int day = Integer.parseInt(dateDivide [2].trim()); Calendar c = Calendar.getInstance();//获取一个日历实例 c.set(year, month-1, day);//设定日历的日期 date = c.getTime(); } |
二、Date类型的比较
Date a;
Date b;
假设现在你已经实例化了a和b
a.after(b)返回一个boolean,如果a的时间在b之后(不包括等于)返回true
b.before(a)返回一个boolean,如果b的时间在a之前(不包括等于)返回true
a.equals(b)返回一个boolean,如果a的时间和b相等返回true
三、Date类型常用的操作函数
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
// 1.计算某一月份的最大天数Calendar time = Calendar.getInstance();time.clear();time.set(Calendar.YEAR, year); // year 为 inttime.set(Calendar.MONTH, i - 1);// 注意,Calendar对象默认一月为0int day = time.getActualMaximum(Calendar.DAY_OF_MONTH);// 本月份的天数// 注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间// 2.Calendar和Date的转化// (1) Calendar转化为Date Calendarcal = Calendar.getInstance();Date date = cal.getTime();// (2) Date转化为CalendarDate date = new Date();Calendar cal = Calendar.getInstance();cal.setTime(date);// 3.格式化输出日期时间(这个用的比较多)Date date = new Date();SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String time = df.format(date);System.out.println(time);// 4.计算一年中的第几星期// (1)计算某一天是一年中的第几星期Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, 2006);cal.set(Calendar.MONTH, 8);cal.set(Calendar.DAY_OF_MONTH, 3);int weekno = cal.get(Calendar.WEEK_OF_YEAR);// (2)计算一年中的第几星期是几号SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, 2006);cal.set(Calendar.WEEK_OF_YEAR, 1);cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);System.out.println(df.format(cal.getTime()));//输出:2006-01-02// 5.add()和roll()的用法(不太常用)// (1)add()方法SimpleDateFormat df=newSimpleDateFormat("yyyy-MM-dd");Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, 2006);cal.set(Calendar.MONTH, 8);cal.set(Calendar.DAY_OF_MONTH, 3);cal.add(Calendar.DATE, -4);Date date = cal.getTime();System.out.println(df.format(date));cal.add(Calendar.DATE, 4);date = cal.getTime();System.out.println(df.format(date));//输出:2006-08-30 2006-09-03//(2)roll方法cal.set(Calendar.YEAR, 2006);cal.set(Calendar.MONTH,8);cal.set(Calendar.DAY_OF_MONTH,3);cal.roll(Calendar.DATE, -4);date=cal.getTime();System.out.println(df.format(date));cal.roll(Calendar.DATE,4);date=cal.getTime();System.out.println(df.format(date));//输出:2006-09-292006-09-03// 可见,roll()方法在本月内循环,一般使用add()方法; |
Java中Date类型详解的更多相关文章
- Java中String类型详解
这篇博客是我一直想总结的,这两天一直比较忙,先上传下照片吧,过后有时间再弄成正常的. 本文主要是对Java中String类型的总结,包括其在JVM中是怎么存储的...
- java中的注解详解和自定义注解
一.java中的注解详解 1.什么是注解 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: @Override public Str ...
- [转载]java中import作用详解
[转载]java中import作用详解 来源: https://blog.csdn.net/qq_25665807/article/details/74747868 这篇博客讲的真的很清楚,这个作者很 ...
- Java中dimension类详解
Java中dimension类详解 https://blog.csdn.net/hrw1234567890/article/details/81217788
- Java中日志组件详解
avalon-logkit Java中日志组件详解 lanhy 发布于 2020-9-1 11:35 224浏览 0收藏 作为开发人员,我相信您对日志记录工具并不陌生. Java还具有功能强大且功能强 ...
- Java中反射机制详解
序言 在学习java基础时,由于学的不扎实,讲的实用性不强,就觉得没用,很多重要的知识就那样一笔带过了,像这个马上要讲的反射机制一样,当时学的时候就忽略了,到后来学习的知识中,很多东西动不动就用反射, ...
- JAVA中Object类方法详解
一.引言 Object是java所有类的基类,是整个类继承结构的顶端,也是最抽象的一个类.大家天天都在使用toString().equals().hashCode().waite().notify() ...
- Java 中的泛型详解-Java编程思想
Java中的泛型参考了C++的模板,Java的界限是Java泛型的局限. 2.简单泛型 促成泛型出现最引人注目的一个原因就是为了创造容器类. 首先看一个只能持有单个对象的类,这个类可以明确指定其持有的 ...
- Java 中的resultset详解
结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等. 结果集读取数据 ...
随机推荐
- Spring框架-IOC和AOP
IOC:它并不是一种技术实现,而是一种设计思想.在任何一个有实际开发意义的程序项目中,我们会使用很多类来描述它们特有的功能,并且通过类与类之间的相互协作来完成特定的业务逻辑.这个时候,每个类都需要负责 ...
- “帮你”校园资讯平台app使用体验
该app由我的17级学长学姐编写而成,主要功能失物招领,二手市场,表白墙.该软件目前只是面向本校的各专业学生,为内测版本.该软件的注册流程简单,只需要学号确定身份后即可登陆,并且发布各种信息,或者与丢 ...
- windows 10下的python开发环境
linux子系统 按照文档 https://www.jianshu.com/p/2bcf5eca5fbc 的前五步,完成 ubuntu子系统安装. 不需安装图形桌面,无使用价值. 在https://w ...
- [题解] 洛谷P3950 部落冲突
传送门 拿到题目,一看 裸LCT (其实是我懒得打,splay又臭又长) 首先,这道题的意思就是删掉一些边 所以常规操作 点权转边权 之后对于战争操作,在对应的边上+1 对于和平操作,在对应的边上-1 ...
- 寒假day16
今天优化了管理员界面,人才标签模块遇到了一点问题,部分结果无法显示,正在寻找原因
- SeetaFaceEngine系列3:Face Identification编译和使用
前面两篇介绍了怎样编译SeetaFace的前两部分,现在就来讲下第三部分Face Identification的编译和使用. 其实,步骤基本上是一直的,如下: 1.新建一个空的DLL工程: 2.修改配 ...
- java相关书籍及网站
原文链接:http://developer.51cto.com/art/201408/448609.htm 对于 Java™ 语言开发人员来说,信息过量是一个真正的问题.每个新入行的程序员都要面临一个 ...
- PAT Advanced 1138 Postorder Traversal (25) [树的遍历,前序中序转后序]
题目 Suppose that all the keys in a binary tree are distinct positive integers. Given the preorder and ...
- 论文或github中一些通用思想
(1) 云从 上海交大 ECCV2018 http://openaccess.thecvf.com/content_ECCV_2018/papers/Yao_Feng_Joint_3D_Face_EC ...
- 4.docker 简介
1.概念 docker 提供了一个开发 打包 运行 app 的平台 通过 docker engine 把 app 和底层infrastructure隔离开来 2.docker engine 所包含的内 ...