java date 实例_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

参考推荐:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据洪流时代,企业转型需要修建自己的“都江堰”

科技的进步推动着人类文明的进化,从农业采集社会到如今的网络智能社会,文明的进化也同样带动了企业的“进化”。今天,人工智能、云计算、大数据等技术的不断突破,让网络产生的数据量呈爆发式增长,数据洪流汹涌奔来&…

java $1参数_jmap命令详解----查看JVM内存使用详情

linux获取java进程PID:https://www.cnblogs.com/sxdcgaq8080/p/10734752.html如果命令使用过程中报错,可能解决你问题的方案:https://www.cnblogs.com/sxdcgaq8080/p/11089179.htmlhttps://www.cnblogs.com/sxdcgaq8080/p/10675966.html1、jmap命令基本概…

时代变了

阅读文本大概需要 2.6 分钟。最近一段时间,经常有人问我这么一个问题,说,张哥,现在市面上有各种付费网课和付费专栏,但我总觉得只有看书学习才是正途,不知道张哥怎么看?到底哪种学习方式最好呢&…

java properties读取缓存_java 读取 properties文件的各种方法

1。使用java.util.Properties类的load()方法示例: InputStream in lnew BufferedInputStream(new FileInputStream(name));Properties p new Properties();p.load(in);2。使用java.util.ResourceBundle类的getBundle()方法示例: ResourceBundle rb Re…

终于有人把什么是云计算、大数据和人工智能讲明白了!云计算是什么?

今天跟大家讲讲云计算、大数据和人工智能。为什么讲这三个东西呢?因为这三个东西现在非常火,并且它们之间好像互相有关系,可是很多人却不知道什么是云计算或者云计算应用在哪:一般谈云计算的时候会提到大数据、谈人工智能的时候会…

java 堆栈信息_每天学习一个命令:jstack 打印 Java 进程堆栈信息

Jstack 用于打印出给定的 java 进程 ID 或 core file 或远程调试服务的 Java 堆栈信息。这里需要注意的是 Java 8 引入了 Java Mission Control,Java Flight Recorder,和 jcmd 等工具来帮助诊断 JVM 和 Java 应用相关的问题。推荐使用最新的工具以及 jcm…

数据洪流来袭,企业转型势不可挡,如何四两拨千斤?

在漫长的历史里,文明的进步都是伴随着科技的发展,企业也在不断进化,无论是商业战略还是商业模式,在科技的推动下与时俱进,不断更迭创新。历史的长河流入数据洪流的时代,人工智能、大数据、云计算等新技术掀…

java写出http数据包_java用jpcap怎么识别出http和https的数据包?

问题简述:利用java的第三方库jpcap写抓包程序,求解怎么识别出http和https的数据包(就只要能判断出是http协议或https协议即可)。测试的解法:1.在tcp包(jpcap自带TCPPacket类比较方便识别tcp包)的基础上用80端口和443端口区分http和https&…

福利 | 2018 OpenInfra Days China限量版免费票任性放出

号外号外!福利来袭,手速up up up~春困夏乏秋盹冬眠暑气炎炎,OpenInfra帮你提神醒脑——特别好礼限量放送Ready?Go!2018 年 6 月 21-22 日,OpenInfra Days China将于国家会议中心北京升级回归,汇…

开源不止,前进不息:2018 OpenInfra Days China来了!

OpenStack Days China是由一群热衷并专注于开源的中国志愿者为中国开源社区组织和举办的年度社区活动。近两年来,志愿者团队成功激起广泛关注,获得了中国各行各业和来自全球开源开发者社区的巨大支持。会议注册人数共计超过 1 万人,参与人数逾…

java 中创建数据端口_java 如何在服务器端用socket创建一个监听端口,并对接受的数据进行处理,端口号为3333,请高手指点一下...

匿名用户1级2011-09-10 回答我百度HI你好了public class Test {public static void main(String[] args) {Test1 tnew Test1();t.start(); //启动线程}}/*** 继承一个线程类* author Administrator**/class Test1 extends Thread{private ServerSocket server null;public Tes…

短暂相逢却回味无穷,全球最具影响力的以太坊技术会议视频,你保存了吗!...

关注我们,了解更多精彩内容自2008年中本聪发表的那篇仅短短9页的比特币白皮书后,毁誉参半的比特币对当今互联网及物联网的世界格局产生了重大的影响,其后延伸出来的区块链技术成为了全球最时髦的名词。相比比特币,以太坊是区块链技…

java函数式编程 map_函数式编程-对Java 8流进行分区

将任意源流划分为固定大小的批次是不可能的,因为这会加重并行处理。 并行处理时,您可能不知道拆分后第一个子任务中有多少个元素,因此您无法为下一个子任务创建分区,直到完全处理第一个子任务。但是,可以从随机访问ofS…

互联网+2.0:技术有多强 梦想才有多近

在过去不到十年的时间里,互联网行业高速发展。先是以手机、pad等智能终端为主的移动互联网打破了PC端互联网商业发展瓶颈,实体经济也依托互联网进行改造升级,“互联网”成为行业图腾和符号。后是随着人工智能、大数据、云计算等技术的融入&am…

java定时器 并发_【java多线程与并发库】— 定时器的应用 | 学步园

定时器的应用1、 定时器主要涉及到两个类(java.util包中)-》public class Timer extendsObject(一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。 )-->public abstract class TimerTask extendsObjectimple…

java返回object的类型_为什么标准java类的clone()返回Object而不是实际的类型

在java中允许指定函数返回的类型,例如下面的代码public class Test {static class Dad {Dad me() {return this;}}static class Son extends Dad {Son me() {return this;}}}已验证.我们来看看ArrayList类.它已经覆盖了clone()函数(至少我看到它在Oracle jdk 1.7源代码)public …

效率提升,英特尔助力企业驶入“快车道”

随着越来越多的企业加入数字化转型大军,每个企业都在期待着数字化带来的业务创新及优化。从云平台的应用、大数据的决策分析,再到工作流程自动化,企业的IT部门不再仅仅是维护企业本身的业务运作以及数据处理,而是需要接入整个生态…

java怎么写事件listener_java 事件监听器ActionListener

/** 功能:java事件监听器ActionListener*/package com.events;import java.awt.BorderLayout;import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class changebgcolor extends JFrame implements Ac…

Spring AOP 使用介绍,从前世到今生

前面写过 Spring IOC 的源码分析,很多读者希望可以出一个 Spring AOP 的源码分析,不过 Spring AOP 的源码还是比较多的,写出来不免篇幅会大些。本文不介绍源码分析,而是介绍 Spring AOP 中的一些概念,以及它的各种配置…

求1到500以内所有的完数并输出。

如果一个数恰好等于除它本身外的所有因子之和&#xff0c;则这个数就称为完数。 例如&#xff1a;6的因子是1、2、3、&#xff0c;且6123&#xff0c;所以6是完数。 #include <stdio.h> void main() {int s,i,j;for(i1;i<500;i){printf("%d ",i);} } 在这…