Java Date 和 Calendar 实例
Java 之 Date 和 Calendar 实例
- package com.homer.learn;
- import java.text.DateFormat;
- import java.text.ParsePosition;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.GregorianCalendar;
- public class TimeTest {
- public static void main(String[] args) {
- TimeTest tt = new TimeTest();
- System.out.println("\n当前日期: ");
- System.out.println(tt.getNowTime()); // 获取当前时间
- System.out.println(tt.getNowTime2()); // 获取当前时间
- System.out.println(tt.getNowTime3()); // 获取当前时间
- System.out.println("\n计算周: ");
- System.out.println(tt.getDaysOfNow2SundayInWeek()); // 获取当前日期与本周日的相差天数
- System.out.println(tt.getDateOfMondayInWeek()); // 获取本周一的日期
- System.out.println(tt.getDateOfSaturdayInWeek()); // 获取本周六的日期
- System.out.println(tt.getDateOfSaturdayInNextWeek()); // 获取下周一的日期
- System.out.println(tt.getDateOfSaturdayInLastWeek()); // 获取上周一的日期
- System.out.println("\n计算月: ");
- System.out.println(tt.getFirstDayOfMonth()); // 获取当月的第一天
- System.out.println(tt.getLastDayOfMonth()); // 获取当月最后一天
- System.out.println(tt.getFirstDayOfPreviousMonth()); // 获取上月第一天
- System.out.println(tt.getLastDayOfPreviousMonth()); // 获取上月最后一天
- System.out.println(tt.getFirstDayOfNextMonth()); // 获取下月第一天
- System.out.println(tt.getLastDayOfNextMonth()); // 获取下月最后一天
- System.out.println("\n计算年: ");
- System.out.println(tt.getFirstDayOfYear()); // 获取本年的第一天
- System.out.println(tt.getLastDayOfYear()); // 获取本年最后一天
- System.out.println(tt.getFirstDayOfPreviousYear()); // 获取上年的第一天
- System.out.println(tt.getLastDayOfPreviousYear()); // 获取上年最后一天
- System.out.println(tt.getFirstDayOfNextYear()); // 获取下年的第一天
- System.out.println(tt.getLastDayOfNextYear()); // 获取下年最后一天
- System.out.println(tt.getDaysOfYear()); // 获取本年的天数
- System.out.println("\n计算季度: ");
- System.out.println(tt.getSeasonOfMonth()); // 获取当前月的季度
- System.out.println(tt.getLastDayOfNow()); // 获取当前天所在月份的天数
- System.out.println(tt.isLeapYear(2012)); // 判断是否是润年
- System.out.println("\n日期格式转换与计算: ");
- System.out.println(tt.getDateFromStr("2012-06-20")); // 将字符串时间格式 yyyy-MM-dd,转换成Date类型
- System.out.println(tt.getWeek("2012-06-20")); // 根据一个日期,返回是星期几的字符串
- System.out.print("2012-06-02 -> 2012-06-12间隔天数:"); // 计算两个日期间的间隔天数
- System.out.println(tt.getDaysFromTwoDate("2012-06-02", "2012-06-12"));
- }
- // 获取当前时间
- public String getNowTime() {
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Date now = new Date();
- return sDateFormat.format(now);
- }
- public String getNowTime2() {
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- Date now = new Date(System.currentTimeMillis());
- return sDateFormat.format(now);
- }
- public String getNowTime3() {
- StringBuilder strBuildNow = new StringBuilder();
- Calendar calendar = Calendar.getInstance();
- int year = calendar.get(Calendar.YEAR);
- int month = calendar.get(Calendar.MONTH) + 1;
- int day = calendar.get(Calendar.DAY_OF_MONTH);
- int hour = calendar.get(Calendar.HOUR_OF_DAY);
- int minute = calendar.get(Calendar.MINUTE);
- int second = calendar.get(Calendar.SECOND);
- int millissecond = calendar.get(Calendar.MILLISECOND);
- strBuildNow.append(year + "-");
- strBuildNow.append(month + "-");
- strBuildNow.append(day + " ");
- strBuildNow.append(hour + ":");
- strBuildNow.append(minute + ":");
- strBuildNow.append(second + ".");
- strBuildNow.append(millissecond);
- return strBuildNow.toString();
- }
- // 获取当前日期与本周日的相差天数
- public int getDaysOfNow2SundayInWeek() {
- Calendar calendar = Calendar.getInstance();
- int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; // 减一天,周一为1,符合中国人习惯。Sunday - 1; Monday - 2; Saturday - 7
- if(dayOfWeek == 0) { // 周日
- return 0;
- } else {
- return 0 - dayOfWeek;
- }
- }
- // 获取本周一的日期
- public String getDateOfMondayInWeek(){
- int day = this.getDaysOfNow2SundayInWeek() + 1; // 加1,即周一离本周日的间隔天数
- GregorianCalendar gCalendar = new GregorianCalendar();
- gCalendar.add(GregorianCalendar.DATE, day); // 计算与本周一相差的时间间隔
- Date curDay = gCalendar.getTime();
- DateFormat dateFormat = DateFormat.getInstance();
- String dateOfMonday = dateFormat.format(curDay);
- return dateOfMonday;
- }
- // 获取本周六的日期
- public String getDateOfSaturdayInWeek(){
- int day = this.getDaysOfNow2SundayInWeek() + 6; // 加6,即周六离本周日的间隔天数
- GregorianCalendar gCalendar = new GregorianCalendar();
- gCalendar.add(GregorianCalendar.DATE, day); // 计算与本周六相差的时间间隔
- Date curDay = gCalendar.getTime();
- DateFormat dateFormat = DateFormat.getInstance();
- String dateOfMonday = dateFormat.format(curDay);
- return dateOfMonday;
- }
- // 获取上周一的日期
- public String getDateOfSaturdayInLastWeek(){
- int day = this.getDaysOfNow2SundayInWeek() - 1; // 减1,即上周一离本周日的间隔天数
- GregorianCalendar gCalendar = new GregorianCalendar();
- gCalendar.add(GregorianCalendar.DATE, day); // 计算与上周一相差的时间间隔
- Date curDay = gCalendar.getTime();
- DateFormat dateFormat = DateFormat.getInstance();
- String dateOfMonday = dateFormat.format(curDay);
- return dateOfMonday;
- }
- // 获取下周一的日期
- public String getDateOfSaturdayInNextWeek(){
- int day = this.getDaysOfNow2SundayInWeek() + 8; // 加8,即下周一离本周日的间隔天数
- GregorianCalendar gCalendar = new GregorianCalendar();
- gCalendar.add(GregorianCalendar.DATE, day); // 计算与下周一相差的时间间隔
- Date curDay = gCalendar.getTime();
- DateFormat dateFormat = DateFormat.getInstance();
- String dateOfMonday = dateFormat.format(curDay);
- return dateOfMonday;
- }
- // 获取当月第一天
- public String getFirstDayOfMonth() {
- String strFirstDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.DATE, 1); // 设置当前月的1号
- strFirstDay = sDateFormat.format(calendar.getTime());
- return strFirstDay;
- }
- // 获取当月最后一天
- public String getLastDayOfMonth() {
- String strLastDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.DATE, 1); // 设置当前月的1号
- calendar.add(Calendar.MONDAY, 1); // 加一个月,变为下月的1号
- calendar.add(Calendar.DATE, -1); // 减去一天,变为当前月的最后一天
- strLastDay = sDateFormat.format(calendar.getTime());
- return strLastDay;
- }
- // 获取上月第一天
- public String getFirstDayOfPreviousMonth() {
- String strFirstDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.DATE, 1); // 设置当前月的1号
- calendar.add(Calendar.MONDAY, -1); // 减一个月,变为上月的1号
- strFirstDay = sDateFormat.format(calendar.getTime());
- return strFirstDay;
- }
- // 获取上月最后一天
- public String getLastDayOfPreviousMonth() {
- String strLastDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.DATE, 1); // 设置当前月的1号
- calendar.add(Calendar.DATE, -1); // 减一天,变为上月的1号
- strLastDay = sDateFormat.format(calendar.getTime());
- return strLastDay;
- }
- public String getLastDayOfPreviousMonth2() {
- String strLastDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.MONDAY, -1); // 减一个月
- calendar.set(Calendar.DATE, 1); // 设置当前月的1号
- calendar.roll(Calendar.DATE, -1); // 把日期回滚一天,也就是本月最后一天
- strLastDay = sDateFormat.format(calendar.getTime());
- return strLastDay;
- }
- // 获取下月第一天
- public String getFirstDayOfNextMonth() {
- String strFirstDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.MONTH, 1); // 加一个月
- calendar.set(Calendar.DATE, 1); // 设置当前月第一天
- strFirstDay = sDateFormat.format(calendar.getTime());
- return strFirstDay;
- }
- // 获取下月最后一天
- public String getLastDayOfNextMonth() {
- String strLastDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.DATE, 1); // 设置当前月的1号
- calendar.add(Calendar.MONDAY, 2); // 加两个月,变为下下月的1号
- calendar.add(Calendar.DATE, -1); // 减一天,变为下月的最后一天
- strLastDay = sDateFormat.format(calendar.getTime());
- return strLastDay;
- }
- public String getLastDayOfNextMonth2(){
- String strLastDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.MONTH, 1); // 加1个月
- calendar.set(Calendar.DATE, 1); // 把日期设置为当月第1天
- calendar.roll(Calendar.DATE, -1); // 日期回滚1天,也就是本月最后1天
- strLastDay = sDateFormat.format(calendar.getTime());
- return strLastDay;
- }
- // 获取本年的第一天
- public String getFirstDayOfYear(){
- String strFirstDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.DAY_OF_YEAR, 1); // 设置当年第一天
- strFirstDay = sDateFormat.format(calendar.getTime());
- return strFirstDay;
- }
- // 获取本年的最后一天
- public String getLastDayOfYear(){
- String strLastDay = "";
- Calendar calendar = Calendar.getInstance();
- strLastDay = calendar.get(Calendar.YEAR) + "-12-31";
- return strLastDay;
- }
- // 获取上年的第一天
- public String getFirstDayOfPreviousYear(){
- String strFirstDay = "";
- Calendar calendar = Calendar.getInstance();
- strFirstDay = (calendar.get(Calendar.YEAR) - 1) + "-01-01";
- return strFirstDay;
- }
- // 获取上年的最后一天
- public String getLastDayOfPreviousYear(){
- String strLastDay = "";
- Calendar calendar = Calendar.getInstance();
- strLastDay = (calendar.get(Calendar.YEAR) - 1) + "-12-31";
- return strLastDay;
- }
- // 获取下年的第一天
- public String getFirstDayOfNextYear(){
- String strFirstDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.YEAR, 1); // 加一年
- calendar.set(Calendar.DAY_OF_YEAR, 1); // 设置当年第一天
- strFirstDay = sDateFormat.format(calendar.getTime());
- return strFirstDay;
- }
- // 获取下年的最后一天
- public String getLastDayOfNextYear(){
- String strLastDay = "";
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- Calendar calendar = Calendar.getInstance();
- calendar.add(Calendar.YEAR, 1); // 加一年
- calendar.set(Calendar.DAY_OF_YEAR, 1); // 设置当年第一天
- calendar.roll(Calendar.DAY_OF_YEAR, -1); // 回滚到当年最后一天
- strLastDay = sDateFormat.format(calendar.getTime());
- return strLastDay;
- }
- // 获取本年的天数
- public String getDaysOfYear(){
- int year = 0;
- int days = 0;
- Calendar calendar = Calendar.getInstance();
- calendar.set(Calendar.DAY_OF_YEAR, 1); // 设置日期为当年第一天
- calendar.roll(Calendar.DAY_OF_YEAR, -1); // 把日期回滚一天
- year = calendar.get(Calendar.YEAR);
- days = calendar.get(Calendar.DAY_OF_YEAR);
- return (days + " in " + year);
- }
- // 获取当前月的季度
- public String getSeasonOfMonth(){
- String strSeason = "";
- int year, month, day;
- int season = 1;
- int array[][] = new int[][]{ {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12} };
- Calendar calendar = Calendar.getInstance();
- year = calendar.get(Calendar.YEAR);
- month = calendar.get(Calendar.MONDAY) + 1;
- day = calendar.get(Calendar.DAY_OF_MONTH);
- switch (month) {
- case 1:
- case 2:
- case 3:
- season = 1;
- break;
- case 4:
- case 5:
- case 6:
- season = 2;
- break;
- case 7:
- case 8:
- case 9:
- season = 3;
- break;
- case 10:
- case 11:
- case 12:
- season = 4;
- break;
- default:
- season = 1;
- break;
- }
- int start_month = array[season-1][0];
- int end_month = array[season-1][2];
- strSeason = year + "-" + month + "-" +day;
- strSeason += " in [ " + year + "-" + start_month + " : " + year + "-" + end_month + " ]";
- return strSeason;
- }
- // 获取当前天所在月份的天数
- public String getLastDayOfNow(){
- String strLastDay = "";
- int year, month, day;
- int days = 0;
- Calendar calendar = Calendar.getInstance();
- year = calendar.get(Calendar.YEAR);
- month = calendar.get(Calendar.MONTH) + 1;
- day = calendar.get(Calendar.DAY_OF_MONTH);
- switch (month) {
- case 1:
- case 3:
- case 5:
- case 7:
- case 8:
- case 10:
- case 12:
- days = 31;
- break;
- case 4:
- case 6:
- case 9:
- case 11:
- days = 30;
- break;
- case 2:
- if (isLeapYear(year)) {
- days = 29;
- } else {
- days = 28;
- }
- break;
- default:
- days = 0;
- break;
- }
- strLastDay = days + " in [ " + year + "-" + month + "-" + day + " ]";
- return strLastDay;
- }
- // 判断是否是润年
- public boolean isLeapYear(int year){
- return (year%4 == 0 && year%100 != 0) || (year%400 == 0);
- }
- // 将字符串时间格式 yyyy-MM-dd,转换成Date类型
- public Date getDateFromStr(String txtDate) {
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- ParsePosition pos = new ParsePosition(0);
- Date date = sDateFormat.parse(txtDate, pos);
- return date;
- }
- // 根据一个日期,返回是星期几的字符串
- public String getWeek(String txtDate) {
- Date date = getDateFromStr(txtDate);
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(date);
- String week = new SimpleDateFormat("EEEE").format(date);
- return week;
- }
- // 计算两个日期间的间隔天数
- public long getDaysFromTwoDate(String txtDate1, String txtDate2) {
- if(txtDate1 == null || txtDate1.equals("")) {
- return 0;
- }
- if(txtDate2 == null || txtDate2.equals("")) {
- return 0;
- }
- SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- long days = 0;
- try {
- Date date1 = sDateFormat.parse(txtDate1);
- Date date2 = sDateFormat.parse(txtDate2);
- days = (date2.getTime() - date1.getTime())/(24*60*60*1000); // 通过getTime()方法,把时间Date转换成毫秒格式Long类型,进行计算
- } catch (Exception e) {
- System.out.println(e.getMessage());
- }
- return days;
- }
- }
运行结果:
当前日期:
2012-03-07
2012-03-07 12:30:11
2012-3-7 12:30:11.101
计算周:
-3
3/5/12 12:30 PM
3/10/12 12:30 PM
3/12/12 12:30 PM
3/3/12 12:30 PM
计算月:
2012-03-01
2012-03-31
2012-02-01
2012-02-29
2012-04-01
2012-04-30
计算年:
2012-01-01
2012-12-31
2011-01-01
2011-12-31
2013-01-01
2013-12-31
366 in 2012
计算季度:
2012-3-7 in [ 2012-1 : 2012-3 ]
31 in [ 2012-3-7 ]
true
日期格式转换与计算:
Wed Jun 20 00:00:00 CST 2012
Wednesday
2012-06-02 -> 2012-06-12间隔天数:10
源码下载
参考推荐:
Java 之 Date 和 Calendar
java 已知一个Date(),获取前一天和后一天
from: http://blog.csdn.net/ithomer/article/details/7328109
Java Date 和 Calendar 实例相关推荐
- java date 实例_Java Date 和 Calendar 实例
Java 之 Date 和 Calendar 实例 package com.homer.learn; import java.text.DateFormat; import java.text.Par ...
- Java Date 和 Calendar
Java 语言的Date(日期),Calendar(日历),DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分.日期是商业逻辑计算一个关键的部分,所有的开发者都应该能够计算 ...
- java Date 和 Calendar类 万字详解(通俗易懂)
Date类介绍 Date类构造器 Date类使用 关于SimpleDateFormat类 Date类对象的格式化 构造Date对象的补充 Date类对象成员方法 Calendar类介绍及使用 字段演示 ...
- java calendar与date_Java中date和calendar的用法
获取现在系统的时间和日期看起来是一件非常神奇的事情,但是当使用date和calendar之后发现仍然非常神奇. 1.date 使用date日期之前需要导入包: import java.text.Sim ...
- Java中date和calendar的用法
获取现在系统的时间和日期看起来是一件非常神奇的事情,但是当使用date和calendar之后发现仍然非常神奇. 1.date 使用date日期之前需要导入包: import java.text.Sim ...
- Java中实用类:Date、Calendar、Math、Random、String、StringBuffer的用法
枚举 枚举类是一种特殊的类,里面的值全部都是静态常量,每一个枚举值都相当于一个本类对象, 只不过,调用对象的toString方法打印的是对象名.如: enum Color{BLUE,RED,YELLO ...
- java day of month_Java Calendar实例增加DAY_OF_MONTH作为递减(仅)HOUR或MINUTE的副作用
我有一个带有TimePicker(@ id / tyme)的主活动的an unfinished Android app,一个DatePicker(@id / date)和一个TextView(@ id ...
- JAVA时间类型:Date、Calendar、LocalDate 、LocalTime、LocalDateTime、Instant的使用
本文介绍JAVA的几种时间类型的使用:Date.Calendar.LocalDate .LocalTime.LocalDateTime.Instant Date #获取当前时间 Date date = ...
- java str2date,java date类与string类实例代码分享
Date类用来指定日期和时间,其构造函数及常用方法如下: publicDate() 从当前时间构造日期时间对象. publicStringtoString() 转换成字符串. publiclongge ...
最新文章
- 在linux 下配置firewalld
- python3 函数 不定长参数 不定参
- 如何修改桌面,收藏夹,我的文档等等的存储位置
- Java File类应用:递归遍历文件夹和递归删除文件
- 低水平博士是提升科研生涯的毒药
- GDCM:gdcm::GroupDict的测试程序
- 系统启动数据库服务器,linux系统如何启动数据库服务器
- HDU 3342 Legal or Not(拓扑排序)
- 分布式、微服务必须配个日志管理系统才优秀,Exceptionless走起~~~
- 订婚和结婚有什么区别
- Mongodb 学习
- 推荐一款windows下好用的文件夹加密、文件加密软件(含使用说明)
- 类似携程,飞猪机票列表滚动的日期带价格
- android伪装mac地址,安卓手机如何伪装ip或者mac地址
- 名字真好听的五子棋——12周进度
- Android4.4 状态栏WiFi图标显示流程
- 服务端向客户端主动发送消息
- git提示subject >50 characters; use shorter first paragraph
- 6.电报机与继电器qk
- SQL基础总结(二):SQL基础
热门文章
- LESSON 10.410.510.6 贝叶斯优化的基本流程BayesOpt vs HyperOpt vs Optuna batch基于BayesOpt实现高斯过程gp优化
- 数学建模学习笔记——灰色关联分析(评价类)
- 中关村创业大街上的“野心”青年:在这里不用拼爹
- 99%创业会失败 去中心化是良药么?
- error C4335: Mac file format detected: please convert the source file to either DOS or UNIX format
- Spring MVC-04循序渐进之基于注解的控制器
- Oracle查询优化-04插入、更新与删除数据
- 链表的建立,搜索,插入,反转,销毁以及合并有序链表。
- MW150UH驱动程序Linux,水星MW150UH无线网卡驱动
- RecyclerView添加头条目显示空白的解决方案