java日期时间
Java中的日期和时间类以及Calendar类用法详解
Java中的⽇期和时间类以及Calendar类⽤法详解Java⽇期和时间类简介Java 的⽇期和时间类位于 java.util 包中。
利⽤⽇期时间类提供的⽅法,可以获取当前的⽇期和时间,创建⽇期和时间参数,计算和⽐较时间。
Date 类Date 类是 Java 中的⽇期时间类,其构造⽅法⽐较多,下⾯是常⽤的两个:Date():使⽤当前的⽇期和时间初始化⼀个对象。
Date(long millisec):从1970年01⽉01⽇00时(格林威治时间)开始以毫秒计算时间,计算 millisec 毫秒。
如果运⾏ Java 程序的本地时区是北京时区(与格林威治时间相差 8 ⼩时),Date dt1=new Date(1000);,那么对象 dt1 就是1970年01⽉01⽇08时00分01秒。
请看⼀个显⽰⽇期时间的例⼦:import java.util.Date;public class Demo{public static void main(String args[]){Date da=new Date(); //创建时间对象System.out.println(da); //显⽰时间和⽇期long msec=da.getTime();System.out.println("从1970年1⽉1⽇0时到现在共有:" + msec + "毫秒");}}运⾏结果:Mon Feb 05 22:50:05 CST 2007从1970年1⽉1⽇0时到现在共有:1170687005390 毫秒⼀些⽐较常⽤的 Date 类⽅法:Date 对象表⽰时间的默认顺序是星期、⽉、⽇、⼩时、分、秒、年。
若需要修改时间显⽰的格式可以使⽤“SimpleDateFormat(String pattern)”⽅法。
例如,⽤不同的格式输出时间:import java.util.Date;import java.text.SimpleDateFormat;public class Demo{public static void main(String args[]){Date da=new Date();System.out.println(da);SimpleDateFormat ma1=new SimpleDateFormat("yyyy 年 MM ⽉ dd ⽇ E 北京时间");System.out.println(ma1.format(da));SimpleDateFormat ma2=new SimpleDateFormat("北京时间:yyyy 年 MM ⽉ dd ⽇ HH 时 mm 分 ss 秒");System.out.println(ma2.format(-1000));}}运⾏结果:Sun Jan 04 17:31:36 CST 20152015 年 01 ⽉ 04 ⽇星期⽇北京时间北京时间:1970 年 01 ⽉ 01 ⽇ 07 时 59 分 59 秒Calendar 类抽象类 Calendar 提供了⼀组⽅法,允许把以毫秒为单位的时间转换成⼀些有⽤的时间组成部分。
JAVA处理日期时间常用方法
JA V A处理日期时间常用方法:java.util.CalendarCalendar 类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期提供了一些方法。
瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间1970 年 1 月1 日的00:00:00。
000,格里高利历的偏移量.例:Calendar cal = Calendar。
getInstance(;//使用默认时区和语言环境获得一个日历。
cal。
add(Calendar.DAY_OF_MONTH, -1;//取当前日期的前一天。
cal。
add(Calendar。
DAY_OF_MONTH, +1;//取当前日期的后一天。
//通过格式化输出日期java.text.SimpleDateFormat format = new java.text。
SimpleDateFormat(”yyyy-MM—dd";System。
out.println("Today is:”+format。
format(Calendar.getInstance(.getTime (;System。
out.println("yesterday is:"+format.format(cal.getTime(;得到2007—12-25日期: Calendar calendar = new GregorianCalendar(2007,11, 25,0,0,0;Date date = calendar.getTime(;System。
out.println("2007 Christmasis:”+format.format(date;//java月份是从0—11,月份设置时要减1。
//GregorianCalendar构造方法参数依次为:年,月—1,日,时,分,秒。
Java日期时间以及日期相互转换
Java⽇期时间以及⽇期相互转换Java⽇期时间,以及相互转化,供⼤家参考,具体内容如下package com.study.string;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;public class DateBase {public static void main(String[] args) throws ParseException {/** 获得当前时间*/Date date1 = new Date();long long1 = date1.getTime();//date类型,转为 long类型System.out.println(date1);//Sat Aug 26 08:36:36 GMT+08:00 2017System.out.println(long1);//1503708031359Calendar cale1 = Calendar.getInstance();date1 = cale1.getTime();//calendar 类型转为 date类型long1 = date1.getTime();System.out.println(cale1);System.out.println(date1);//Sat Aug 26 08:36:36 GMT+08:00 2017System.out.println(long1);/**设置时间*/long1 += 24*60*60*1000;date1.setTime(long1);System.out.println(date1);//Sun Aug 27 08:43:26 GMT+08:00 2017/** 格式化时间⽇期,⽆参数的默认格式,有参数的⾃定义格式。
Java日期格式大全
日期和时间模式日期和时间格式由日期和时间模式字符串指定。
在日期和时间模式字符串中,未加引号的字母'A'到'Z'和'a'到'z'被解释为模式字母,用来表示日期或时间字符串元素。
文本可以使用单引号(')引起来,以免进行解释。
"''"表示单引号。
所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。
定义了以下模式字母(所有其他字符'A'到'Z'和'a'到'z'都被保留):字母日期或时间元素表示示例G Era标志符Text ADM年中的月份Month July;Jul;07W月份中的周数Number2d月份中的天数Number10E星期中的天数Text Tuesday;TueH一天中的小时数(0-23)Number0K am/pm中的小时数(0-11)Number0m小时中的分钟数Number30S毫秒数Number978Z时区RFC822timezone-0800示例以下示例显示了如何在美国语言环境中解释日期和时间模式。
给定的日期和时间为美国太平洋时区的本地时间2001-07-0412:08:56。
日期和时间模式结果"yyyy.MM.dd G'at'HH:mm:ss z"2001.07.04AD at12:08:56PDT"EEE,MMM d,''yy"Wed,Jul4,'01"h:mm a"12:08PM"hh'o''clock'a,zzzz"12o'clock PM,Pacific Daylight Time "K:mm a,z"0:08PM,PDT"yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04AD12:08PM"EEE,d MMM yyyy HH:mm:ss Z"Wed,4Jul200112:08:56-0700 "yyMMddHHmmssZ"010*********-0700"yyyy-MM-dd'T'HH:mm:ss.SSSZ"2001-07-04T12:08:56.235-0700同步日期格式是不同步的。
java 时间格式写法
java 时间格式写法在Java中,我们可以使用java.time包中的类来处理日期和时间。
以下是一些常见的日期和时间格式写法:1.获取当前日期和时间:javaimport java.time.LocalDateTime;LocalDateTime now = LocalDateTime.now();System.out.println(now); // 输出当前日期和时间2.格式化日期和时间:javaimport java.time.LocalDateTime;import java.time.format.DateTimeFormatter;LocalDateTime now = LocalDateTime.now();DateTimeFormatter formatter =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String formattedDateTime = now.format(formatter);System.out.println(formattedDateTime); // 输出格式化后的日期和时间3.解析日期和时间:javaimport java.time.LocalDateTime;import java.time.format.DateTimeFormatter;String dateTimeStr = "2023-03-15 12:34:56";DateTimeFormatter formatter =DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");LocalDateTime dateTime =LocalDateTime.parse(dateTimeStr, formatter);System.out.println(dateTime); // 输出解析后的日期和时间4.处理时区:javaimport java.time.ZonedDateTime;import java.time.ZoneId;ZonedDateTime dateTime =ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));System.out.println(dateTime); // 输出当前亚洲/上海时区的日期和时间以上是一些常见的Java日期和时间格式写法,你可以根据具体需求进行调整和扩展。
JAVA格式化日期、时间的方法
JAVA格式化⽇期、时间的⽅法使⽤ DateFormat 格式化⽇期、时间DateFormat 也是⼀个抽象类,它也提供了如下⼏个类⽅法⽤于获取 DateFormat 对象。
getDateInstance():返回⼀个⽇期格式器,它格式化后的字符串只有⽇期,没有时间。
该⽅法可以传⼊多个参数,⽤于指定⽇期样式和 Locale 等参数;如果不指定这些参数,则使⽤默认参数。
getTimeInstance():返回⼀个时间格式器,它格式化后的字符串只有时间,没有⽇期。
该⽅法可以传⼊多个参数,⽤于指定时间样式和 Locale 等参数;如果不指定这些参数,则使⽤默认参数。
getDateTimeInstance():返回⼀个⽇期、时间格式器,它格式化后的字符串既有⽇期,也有时间。
该⽅法可以传⼊多个参数,⽤于指定⽇期样式、时间样式和 Locale 等参数;如果不指定这些参数,则使⽤默认参数。
上⾯三个⽅法可以指定⽇期样式、时间样式参数,它们是的4个静态常量:FULL、LONG、MEDIUM 和 SHORT,通过这4个样式参数可以控制⽣成的格式化字符串。
看如下例⼦程序。
import java.util.*;import java.text.*;import static java.text.DateFormat.*;public class DateFormatTest {public static void main(String[] args) throws ParseException {// 需要被格式化的时间Date dt = new Date();// 创建两个Locale,分别代表中国、美国Locale[] locales = { Locale.CHINA, };DateFormat[] df = new DateFormat[16];// 为上⾯两个Locale创建16个DateFormat对象for (int i = 0; i < locales.length; i++) {df[i * 8] = DateFormat.getDateInstance(SHORT, locales[i]);df[i * 8 + 1] = DateFormat.getDateInstance(MEDIUM, locales[i]);df[i * 8 + 2] = DateFormat.getDateInstance(LONG, locales[i]);df[i * 8 + 3] = DateFormat.getDateInstance(FULL, locales[i]);df[i * 8 + 4] = DateFormat.getTimeInstance(SHORT, locales[i]);df[i * 8 + 5] = DateFormat.getTimeInstance(MEDIUM, locales[i]);df[i * 8 + 6] = DateFormat.getTimeInstance(LONG, locales[i]);df[i * 8 + 7] = DateFormat.getTimeInstance(FULL, locales[i]);}for (int i = 0; i < locales.length; i++) {String tip = i == 0 ? "----中国⽇期格式----" : "----美国⽇期格式----";System.out.println(tip);System.out.println("SHORT格式的⽇期格式:" + df[i * 8].format(dt));System.out.println("MEDIUM格式的⽇期格式:" + df[i * 8 + 1].format(dt));System.out.println("LONG格式的⽇期格式:" + df[i * 8 + 2].format(dt));System.out.println("FULL格式的⽇期格式:" + df[i * 8 + 3].format(dt));System.out.println("SHORT格式的时间格式:" + df[i * 8 + 4].format(dt));System.out.println("MEDIUM格式的时间格式:" + df[i * 8 + 5].format(dt));System.out.println("LONG格式的时间格式:" + df[i * 8 + 6].format(dt));System.out.println("FULL格式的时间格式:" + df[i * 8 + 7].format(dt));}}}上⾯程序共创建了16个 DateFormat 对象,分别为中国、美国两个 Locale 各创建8个 DateFormat 对象,分别是 SHORT、MEDIUM、LONG、FULL 四种样式的⽇期格式器、时间格式器。
java中年月日时分秒表示方法
java中年月日时分秒表示方法
在Java中,可以使用包中的类来表示日期和时间。
下面是一些常用的类:
1. LocalDate:表示日期,不包含时间。
例如:。
2. LocalTime:表示时间,不包含日期。
例如:14:30:00。
3. LocalDateTime:表示日期和时间。
例如:T14:30:00。
4. ZonedDateTime:表示带时区的日期和时间。
例如:T14:30:00+08:00。
这些类都提供了许多方法来获取和设置日期和时间的各个部分,例如年、月、日、小时、分钟、秒等。
例如,LocalDateTime类的now()方法可以获取
当前日期和时间,getYear()方法可以获取年份,getMonthValue()方法可
以获取月份等。
下面是一个简单的示例代码,演示如何使用LocalDateTime类来表示当前
日期和时间:
```java
import ;
public class DateTimeExample {
public static void main(String[] args) { LocalDateTime now = ();
("当前日期和时间:" + now);
("年份:" + ());
("月份:" + ());
("日期:" + ());
("小时:" + ());
("分钟:" + ());
("秒:" + ());
}
}
```。
JAVA日期时间的计算
JAVA日期时间的计算最近,手头有不少项目,其中就有一个类似公文流转的项目,其中有一个模块是任务的制定,而在任务的类型中有一个循环任务,就是用户输入任务的开始日期、结束日期,还需要输入一个周期数,比如每周的星期几、每月的多少号等,这里面就牵扯到JAVA日期时间的计算,从网上收集了一下,整理下来,供大家参考^_^Java 语言的Calendar,GregorianCalendar (日历),Date(日期), 和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象。
学习日期, 日期格式, 日期的解析和日期的计算。
我们将讨论下面的类:1、具体类(和抽象类相对)java.util.Date2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar 具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类.1. java.util.Date及其格式化Date 类从Java 开发包(JDK) 1.0 就开始进化, 当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年. 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了, 我们将在本文中进一步讨论它. 这种改进旨在更好的处理日期数据的国际化格式. 就象在JDK 1.1中一样, Date 类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1 月1日00:00:00这一刻之前或者是之后经历的毫秒数.1.1. 创建java.util.DateJava统计从1970年1月1日起的毫秒的数量表示日期。
java获取年月日的方法
Java获取年月日的方法在Java编程中,我们经常需要获取当前的年、月和日。
这些信息在许多应用程序中都是必需的,例如日历应用、日期处理和数据分析等。
本文将介绍几种获取年月日的方法,帮助你在Java中轻松地处理日期。
1. 使用Java.util.Date类Java.util.Date类是Java中处理日期和时间的基本类之一。
要获取当前的年、月和日,可以使用以下代码:import java.util.Date;import java.text.SimpleDateFormat;public class Main {public static void main(String[] args) {Date date = new Date();SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");SimpleDateFormat sdfMonth = new SimpleDateFormat("MM");SimpleDateFormat sdfDay = new SimpleDateFormat("dd");String year = sdfYear.format(date);String month = sdfMonth.format(date);String day = sdfDay.format(date);System.out.println("Year: " + year);System.out.println("Month: " + month);System.out.println("Day: " + day);}}在上面的代码中,我们使用了SimpleDateFormat类来格式化日期。
通过传入不同的格式化模式,我们可以获取所需的日期部分。
JAVA计算日期时间差的几种方法
JAVA计算日期时间差的几种方法在Java中,有几种方法可以计算日期和时间的差异。
下面将介绍一些常用的方法。
1. 使用java.util.Date和java.util.Calendar类:-获取两个日期之间的毫秒差:将两个日期转换为毫秒数,然后相减。
- 获取两个日期之间的天数差:将两个日期转换为Calendar对象,然后计算两个日期之间的天数差。
- 获取两个日期之间的小时差:将两个日期转换为Calendar对象,然后计算两个日期之间的小时差。
示例代码:```javaimport java.util.Date;import java.util.Calendar;public class DateDifferenceExamplepublic static void main(String[] args)//获取当前日期和时间Date currentDate = new Date(;//获取指定日期和时间Calendar calendar = Calendar.getInstance(;calendar.set(2024, Calendar.JANUARY, 1, 0, 0, 0);Date specifiedDate = calendar.getTime(;//计算日期和时间差long millisecondsDiff = specifiedDate.getTime( - currentDate.getTime(;calendar.setTimeInMillis(millisecondsDiff);int daysDiff = calendar.get(Calendar.DAY_OF_YEAR);int hoursDiff = calendar.get(Calendar.HOUR_OF_DAY);//输出结果System.out.println("毫秒差: " + millisecondsDiff);System.out.println("天数差: " + daysDiff);System.out.println("小时差: " + hoursDiff);}```- 获取两个日期之间的天数差:使用Period类的between方法计算两个LocalDate对象之间的天数差。
java中获取工作日时间的方法
java中获取工作日时间的方法(原创实用版4篇)《java中获取工作日时间的方法》篇1在Java 中,你可以通过使用`Calendar` 和`Date` 类来获取工作日时间。
以下是一个示例代码,用于获取当前时间的工作日信息:```javaimport java.util.Calendar;import java.util.Date;public class WorkDayExample {public static void main(String[] args) {// 获取当前时间Date currentDate = new Date();// 创建Calendar 对象并设置当前时间Calendar calendar = Calendar.getInstance();calendar.setTime(currentDate);// 获取当前时间的星期几(0 表示星期日,1 表示星期一,以此类推)int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);// 如果当前时间为工作日,则输出"今天是工作日"if (dayOfWeek == Calendar.MONDAY || dayOfWeek == Calendar.TUESDAY ||dayOfWeek == Calendar.WEDNESDAY || dayOfWeek == Calendar.THURSDAY ||dayOfWeek == Calendar.FRIDAY) {System.out.println("今天是工作日");} else {System.out.println("今天是周末");}}}```请注意,这个示例代码将输出当前时间的工作日信息。
《java中获取工作日时间的方法》篇2在Java 中,可以使用`Calendar` 和`Date` 类来获取工作日时间。
Java 日期时间 Date类型,long类型,String类型表现形式的转换
Java 日期时间Date类型,long类型,String类型表现形式的转换1、java.util.Date类型转换成long类型java.util.Date dt = new Date();System.out.println(dt.toString()); //java.util.Date的含义long lSysTime1 = dt.getTime() / 1000; //得到秒数,Date类型的getTime()返回毫秒数java.util.Date dt = new Date();System.out.println(dt.toString()); //java.util.Date的含义long lSysTime1 = dt.getTime() / 1000; //得到秒数,Date类型的getTime()返回毫秒数2、由long类型转换成Date类型SimpleDateFormat sdf= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");//前面的lSysTime是秒数,先乘1000得到毫秒数,再转为java.util.Date 类型java.util.Date dt = new Date(lSysTime1 * 1000);String sDateTime = sdf.format(dt); //得到精确到秒的表示:08/31/200621:08:00System.out.println(sDateTime);SimpleDateFormat sdf= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");//前面的lSysTime是秒数,先乘1000得到毫秒数,再转为java.util.Date 类型java.util.Date dt = new Date(lSysTime1 * 1000);String sDateTime = sdf.format(dt); //得到精确到秒的表示:08/31/2006 21:08:00System.out.println(sDateTime);//注意HH与hh含认不同,HH表示以24小时制取,hh表示以12小时制取常用的格式的含义,摘自Jdk,注意大小写的含义通常是不同的:3、"08/31/2006 21:08:00"格式的String转换java.util.Date类型String sDt = "08/31/2006 21:08:00";SimpleDateFormat sdf= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");Date dt2 = sdf.parse(sDt);//继续转换得到秒数的long型long lTime = dt2.getTime() / 1000;String sDt = "08/31/2006 21:08:00";SimpleDateFormat sdf= new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");Date dt2 = sdf.parse(sDt);//继续转换得到秒数的long型long lTime = dt2.getTime() / 1000;//注意HH与hh含认不同,HH表示以24小时制取,hh表示以12小时制取常用的格式的含义,摘自Jdk,注意大小写的含义通常是不同的:字母含义示例y Y ear 1996;96 哪一年M Month in year J uly;Jul;07 一年中的哪一月m Minute in hour 30 一个小时中的第几分钟w Week in year 27 一年中的第几个星期W Week in month 2 一个月中的第几个星期D Day in year 189 一年中的第几天d Day in month 10 一个月中的第几天H Hour in day (0-23) 0 一天中的第几个小时(24小时制)h Hour in am/pm (1-12) 12 一天中上午、下午的第几个小时(12小时制)S Millisecond 978 毫秒数s Second in minute 55 一分钟的第几秒字母含义示例y Y ear 1996;96 哪一年M Month in year J uly;Jul;07 一年中的哪一月m Minute in hour 30 一个小时中的第几分钟w Week in year 27 一年中的第几个星期W Week in month 2 一个月中的第几个星期D Day in year 189 一年中的第几天d Day in month 10 一个月中的第几天H Hour in day (0-23) 0 一天中的第几个小时(24小时制)h Hour in am/pm (1-12) 12 一天中上午、下午的第几个小时(12小时制)S Millisecond 978 毫秒数s Second in minute 55 一分钟的第几秒4、系统当前时间long lSysTime2 = System.currentTimeMillis(); //得到毫秒表示的系统当前时间long lSysTime2 = System.currentTimeMillis(); //得到毫秒表示的系统当前时间。
Java时间类-Calendar、Date、LocalDateLocalTime
Java时间类-Calendar、Date、LocalDateLocalTime1、Date 类 java.util.Date是⼀个“万能接⼝”,它包含⽇期、时间,还有毫秒数,如果你只想⽤java.util.Date存储⽇期,或者只存储时间,那么,只有你知道哪些部分的数据是有⽤的,哪些部分的数据是不能⽤的。
1.1 Date的构造⽅法 Date 是我们使⽤的最多的⼀个⽇期类,Date提供的构造⽅法在官⽅API中有⼀下⼏种: Date 类提供了多种构造⽅法,但是⽬前有很多⽅法都已经不建议使⽤public Date() {this(System.currentTimeMillis());}public Date(long date) {fastTime = date;}@Deprecatedpublic Date(int year, int month, int date) {this(year, month, date, 0, 0, 0);}@Deprecatedpublic Date(int year, int month, int date, int hrs, int min) {this(year, month, date, hrs, min, 0);}@Deprecatedpublic Date(int year, int month, int date, int hrs, int min, int sec)@Deprecatedpublic Date(String s) {this(parse(s));} ⽬前我们可以通过使⽤:Date date0 = new Date();Date date1 = new Date(time); 这两种⽅法创建对象的不同主要是通过指定的时间戳不同,通过设置Date 中的fastTime 进⾏设置Date 对象的时间。
除了使⽤构造⽅法获取实例,Date 还可以通过Instant来创建⼀个Date 实例:Instant instant = Instant.now();Date date = Date.from(instant); Instant 是Java 8 提供的新特性: 1.2 Date的常⽤⽅法 Date 类中,提供了常⽤的获取:年,⽉,⽇,时,分,秒等⽅法:Date date = new Date();int dates = date.getDate();int year = date.getYear();int month = date.getMonth();int day = date.getDay();int hours = date.getHours();int min = date.getMinutes();int second = date.getSeconds();long time = date.getTime();int times = date.getTimezoneOffset(); 输出结果:dates: 14year: 116month: 11day: 3hours: 15min: 8second: 29time: 1481699309422times: -480 读者可能会发现,这⾥的年份并不是我们想要的,这⾥主要是因为代码⽅法实现:我们可以看到,这⾥的getYear 并不是获取当前年份,⽽是获取到和1900年的差值,这⾥主要是因为JDK⽼版本遗留下来的问题,对于Date 中获取年⽉⽇的⽅法,现在已经不建议使⽤了。
详解在java中进行日期时间比较的4种方法
详解在java中进⾏⽇期时间⽐较的4种⽅法1. pareTo()java.util.Date提供了在Java中⽐较两个⽇期的经典⽅法compareTo()。
如果两个⽇期相等,则返回值为0。
如果Date在date参数之后,则返回值⼤于0。
如果Date在date参数之前,则返回值⼩于0。
@Testvoid testDateCompare() throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date1 = sdf.parse("2009-12-31");Date date2 = sdf.parse("2019-01-31");System.out.println("date1 : " + sdf.format(date1));System.out.println("date2 : " + sdf.format(date2));if (pareTo(date2) > 0) {System.out.println("Date1 时间在 Date2 之后");} else if (pareTo(date2) < 0) {System.out.println("Date1 时间在 Date2 之前");} else if (pareTo(date2) == 0) {System.out.println("Date1 时间与 Date2 相等");} else {System.out.println("程序怎么会运⾏到这⾥?正常应该不会");}}输出结果:date1 : 2009-12-31date2 : 2019-01-31Date1 时间在 Date2 之前2. Date.before(),Date.after()和Date.equals()⼀种语义上⽐较友好的⽅法来⽐较两个java.util.Date@Testvoid testDateCompare2() throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date1 = sdf.parse("2009-12-31");Date date2 = sdf.parse("2019-01-31");System.out.println("date1 : " + sdf.format(date1));System.out.println("date2 : " + sdf.format(date2));if (date1.after(date2)) {System.out.println("Date1 时间在 Date2 之后");}if (date1.before(date2)) {System.out.println("Date1 时间在 Date2 之前");}if (date1.equals(date2)) {System.out.println("Date1 时间与 Date2 相等");}}输出结果date1 : 2009-12-31date2 : 2019-01-31Date1 时间在 Date2 之前3. Calender.before(),Calender.after()和Calender.equals()使⽤java.util.Calendar⽐较两个Date⽇期@Testvoid testDateCompare3() throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date date1 = sdf.parse("2009-12-31");Date date2 = sdf.parse("2019-01-31");System.out.println("date1 : " + sdf.format(date1));System.out.println("date2 : " + sdf.format(date2));Calendar cal1 = Calendar.getInstance();Calendar cal2 = Calendar.getInstance();cal1.setTime(date1);cal2.setTime(date2);if (cal1.after(cal2)) {System.out.println("Date1 时间在 Date2 之后");}if (cal1.before(cal2)) {System.out.println("Date1 时间在 Date2 之前");}if (cal1.equals(cal2)) {System.out.println("Date1 时间与 Date2 相等");}}输出结果:date1 : 2009-12-31date2 : 2019-01-31Date1 时间在 Date2 之前4. Java 8⽇期⽐较⽅法在Java 8中,可以使⽤新的isBefore(),isAfter(),isEqual()和compareTo()来⽐较LocalDate,LocalTime和LocalDateTime。
java时间正则表达式
(10|12|0?[13578])([-\/\._])(3[01]|[12][0-9]
|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))
([-\/\._])(11|0?[469])([-\/\._])(30|[12][0-9]
([-\/\._])(29)$)|(^([1][89][0][48])([-\/\._])
(0?2)([-\/\._])(29)$)|(^([2-9][0-9][0][48])
([-\/\._])(0?2)([-\/\._])(29)$)|(^([1][89]
[2468][048])([-\/\._])(0?2)([-\/\._])(29)$)|
1、月份为 1, 3, 5, 7, 8, 10, 12,天数范围为01 - 31,匹配MM-DD的正则表达式为:(0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])
2、月份为 4, 6, 9, 11,天数范围为 01-30,匹配MM-DD的正则表达式为:(0[469]|11)-(0[1-9]|[12][0-9]|30)
分析:
1、什么是合法的日期范围?对于不同的应用场景,这个问题有不同的解释。这里采纳MSDN中的约定:
DateTime值类型表示值范围在公元(基督纪元)0001 年 1 月 1 日午夜 12:00:00 到公元
(C.E.) 9999 年 12 月 31 日晚上 11:59:59 之间的日期和时间。
[0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}
Java日期和时间处理:使用Date和Calendar类进行日期计算
Java日期和时间处理:使用Date和Calendar类进行日期计算引言:在编程中,日期和时间的处理是非常常见的需求。
Java提供了Date和Calendar 两个类来处理日期和时间。
本文将介绍如何使用这两个类进行日期计算,并提供一些实际应用的例子。
一、Date类的基本使用Date类是Java中处理日期和时间的基本类。
它表示自1970年1月1日00:00:00 GMT以来的毫秒数。
我们可以使用Date类来表示一个特定的日期和时间。
1. 创建一个Date对象要创建一个Date对象,可以使用无参数的构造函数,它将返回当前的日期和时间。
```javaDate date = new Date();```2. 获取日期和时间Date类提供了一些方法来获取日期和时间的各个部分,如年、月、日、时、分、秒等。
```javaint year = date.getYear() + 1900; // 获取年份,需要加上1900int month = date.getMonth() + 1; // 获取月份,需要加上1int day = date.getDate(); // 获取日期int hour = date.getHours(); // 获取小时int minute = date.getMinutes(); // 获取分钟int second = date.getSeconds(); // 获取秒钟```3. 格式化日期和时间要将日期和时间格式化为字符串,可以使用SimpleDateFormat类。
```javaSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String formattedDate = sdf.format(date);```二、Calendar类的基本使用Calendar类是Java中处理日期和时间的另一个重要类。
JAVA计算日期,时间差的几种方法
1. 手工计算2.采用一个三方的jar包(Joda time library)3. 利用TimeUnit类(java.util.concurrent 包中)方法一:手工计算程序代码import java.text.SimpleDateFormat;import java.util.Date;public class DateDifferentExample {public static void main(String[] args) {String dateStart = "01/14/2012 09:29:58";String dateStop = "01/15/2012 10:31:48";//HH converts hour in 24 hours format (0-23), day calculation SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");Date d1 = null;Date d2 = null;try {d1 = format.parse(dateStart);d2 = format.parse(dateStop);//in millisecondslong diff = d2.getTime() - d1.getTime();long diffSeconds = diff / 1000 % 60;long diffMinutes = diff / (60 * 1000) % 60;long diffHours = diff / (60 * 60 * 1000) % 24;long diffDays = diff / (24 * 60 * 60 * 1000);System.out.print(diffDays + " days, ");System.out.print(diffHours + " hours, ");System.out.print(diffMinutes + " minutes, ");System.out.print(diffSeconds + " seconds.");} catch (Exception e) {e.printStackTrace();}}}结果为:程序代码1 days, 1 hours, 1 minutes, 50 seconds.方法二:采用joda-time-2.1.jar (这里去下载:/)程序代码import java.text.SimpleDateFormat;import java.util.Date;import org.joda.time.DateTime;import org.joda.time.Days;import org.joda.time.Hours;import org.joda.time.Minutes;import org.joda.time.Seconds;public class JodaDateDifferentExample {public static void main(String[] args) {String dateStart = "01/14/2012 09:29:58";String dateStop = "01/15/2012 10:31:48";SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");Date d1 = null;Date d2 = null;try {d1 = format.parse(dateStart);d2 = format.parse(dateStop);DateTime dt1 = new DateTime(d1);DateTime dt2 = new DateTime(d2);System.out.print(Days.daysBetween(dt1, dt2).getDays() + " days, ");System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " hours, ");System.out.print(Minutes.minutesBetween(dt1,dt2).getMinutes() % 60 + " minutes, ");System.out.print(Seconds.secondsBetween(dt1,dt2).getSeconds() % 60 + " seconds.");} catch (Exception e) {e.printStackTrace();}}}结果为:程序代码1 days, 1 hours, 1 minutes, 50 seconds.方法三: 采用TimeUnit ( java.util.concurrent包中的TimeUnit) 程序代码long diffSeconds = diff / 1000 % 60;long diffMinutes = diff / (60 * 1000) % 60;程序代码long diffSeconds = LISECONDS.toSeconds(diff) % 60; long diffMinutes = LISECONDS.toMinutes(diff) % 60; long diffHours = LISECONDS.toHours(diff) % 24; long diffDays = LISECONDS.toDays(diff);文章参考:/article/java/361.htm。
JAVA处理期时间常用方法
JAVA处理期时间常用方法Java中处理日期时间的常用方法有以下几种:1.获取当前日期时间使用java.util包中的Date类可以获取当前日期时间。
例如:```javaDate now = new Date(;System.out.println(now);```2.格式化日期时间使用java.text包中的SimpleDateFormat类可以将日期时间对象按照指定的格式进行格式化。
例如:```javaSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String formattedDate = sdf.format(now);System.out.println(formattedDate);```3.解析字符串为日期时间使用SimpleDateFormat类的parse(方法可以将字符串解析为日期时间对象。
例如:```javaString dateStr = "2024-12-31 23:59:59";Date parsedDate = sdf.parse(dateStr);System.out.println(parsedDate);```4.获取日期的年、月、日等字段使用Calendar类可以获取具体的年、月、日等字段。
例如:```javaCalendar calendar = Calendar.getInstance(;calendar.setTime(now);int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH) + 1;int day = calendar.get(Calendar.DAY_OF_MONTH);System.out.println("Year: " + year + ", Month: " + month + ", Day: " + day);```5.比较两个日期```javaDate date1 = sdf.parse("2024-01-01 00:00:00");Date date2 = sdf.parse("2024-01-01 00:00:00");if (result < 0)System.out.println("date1 is before date2");} else if (result > 0)System.out.println("date1 is after date2");} elseSystem.out.println("date1 is equal to date2");```6.增加或减少日期的一些字段使用Calendar类的add(方法可以对日期的一些字段进行增加或减少操作。
java获取当前日期和时间(各种方法对比)
java获取当前⽇期和时间(各种⽅法对⽐)@⽬录https:///lydms/article/details/103937041⼀、简介使⽤到的时间类有:System.currentTimeMillis():System.currentTimeMillis()产⽣⼀个当前的毫秒,这个毫秒其实就是⾃1970年1⽉1⽇0时起的毫秒数,类型为long;Date:类Date表⽰特定的瞬间,精确到毫秒。
从 JDK 1.1 开始,应该使⽤Calendar类实现⽇期和时间字段之间转换,使⽤DateFormat类来格式化和解析⽇期字符串。
Date中的相应⽅法已废弃。
Calendar:Calendar类是⼀个抽象类,它为特定瞬间与⼀组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等之间的转换提供了⼀些⽅法,并为操作⽇历字段(例如获得下星期的⽇期)提供了⼀些⽅法;主要是⽤的是get⽅法:get(int field) 返回给定⽇历字段的值。
其中传⼊的主要参数为:HOUR_OF_DAY ⼀天中某个⼩时;DAY_OF_WEEK ⼀个星期中的某天;DAY_OF_MONTH ⼀个⽉中的某天;DAY_OF_YEAR 当前年中的天数;WEEK_OF_MONTH 当前⽉中的星期数;WEEK_OF_YEAR 当前年中的星期数;⼆、使⽤1、获取当前时间的毫秒值System.currentTimeMillis()long timeNow = System.currentTimeMillis();System.out.println(timeNow);Date(不推荐使⽤)Date date = new Date()getTime();System.out.println(timeNow);2、获取当前的时间System.currentTimeMillis()(yyyy)long time = System.currentTimeMillis();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss");String day = dateFormat.format(time);System.out.println(day);DateDate date = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss");String day = dateFormat.format(date);System.out.println(day);3、获取当前的⽇期(相对于⽉)long timeMillis = System.currentTimeMillis();SimpleDateFormat format = new SimpleDateFormat("dd");String dayOfMonth = format.format(timeMillis);System.out.println(dayOfMonth);CalendarCalendar instance = Calendar.getInstance();int dayOfMonth = instance.get(Calendar.DAY_OF_MONTH);System.out.println(dayOfMonth);4、SimpleDateFormat中格式化字符的含义5、YYYY与yyyy区别⽇期格式化时,yyyy表⽰当天所在的年,⽽⼤写的YYYY代表是week in which year(JDK7之后引⼊的概念),意思是当天所在的周属于的年份,⼀周从周⽇开始,周六结束,只要本周跨年,返回的YYYY就是下⼀年。
java处理日期时间相加减大全
java处理⽇期时间相加减⼤全 本⽂由⼴州疯狂软件java培训分享: java处理⽇期时间相加减 JAVA处理⽇期时间常⽤⽅法: 1.java.util.Calendar Calendar 类是⼀个抽象类,它为特定瞬间与⼀组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等⽇历字段之间的转换提供了⼀些⽅法,并为操作⽇历字段(例如获得下星期的⽇期)提供了⼀些⽅法。
瞬间可⽤毫秒值来表⽰,它是距历元(即格林威治标准时间 1970 年 1⽉ 1 ⽇的 00:00:00.000,格⾥⾼利历)的偏移量。
例: Java代码 1. Calendar cal = Calendar.getInstance();//使⽤默认时区和语⾔环境获得⼀个⽇历。
2. cal.add(Calendar.DAY_OF_MONTH, -1);//取当前⽇期的前⼀天. 3. 4. cal.add(Calendar.DAY_OF_MONTH, +1);//取当前⽇期的后⼀天. 5. 6. //通过格式化输出⽇期 7. java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); 8. 9. System.out.println("Today is:"+format.format(Calendar.getInstance().getTime())); 10. 11. System.out.println("yesterday is:"+format.format(cal.getTime())); 得到2007-12-25⽇期: Java代码 1. Calendar calendar = new GregorianCalendar(2007, 11, 25,0,0,0); 2. Date date = calendar.getTime(); 3. System.out.println("2007 Christmas is:"+format.format(date)); java⽉份是从0-11,⽉份设置时要减1. GregorianCalendar构造⽅法参数依次为:年,⽉-1,⽇,时,分,秒.取⽇期的部分: Java代码 1. int year =calendar.get(Calendar.YEAR); 2. 3. int month=calendar.get(Calendar.MONTH)+1; 4. 5. int day =calendar.get(Calendar.DAY_OF_MONTH); 6. 7. int hour =calendar.get(Calendar.HOUR_OF_DAY); 8. 9. int minute =calendar.get(Calendar.MINUTE); 10. 11. int seconds =calendar.get(Calendar.SECOND); 取⽉份要加1. 判断当前⽉份的最⼤天数: Java代码 1. Calendar cal = Calendar.getInstance(); 2. int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH); 3. System.out.println(day); 2.java.util.Date Java代码 1. java.util.Date today=new java.util.Date(); 2. System.out.println("Today is "+formats.format(today)); 取当⽉的第⼀天: Java代码 1. java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-01"); 2. java.util.Date firstDay=new java.util.Date(); 3. System.out.println("the month first day is "+formats.format(firstDay)); 取当⽉的最后⼀天: Java代码 1. 2. Calendar cal = Calendar.getInstance(); 3. int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH); 4. java.text.Format formatter3=new java.text.SimpleDateFormat("yyyy-MM-"+maxDay); 5. System.out.println(formatter3.format(cal.getTime())); 求两个⽇期之间相隔的天数: Java代码 1. java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd"); 2. java.util.Date beginDate= format.parse("2007-12-24"); 3. java.util.Date endDate= format.parse("2007-12-25"); 4. long day=(date.getTime()-mydate.getTime())/(24*60*60*1000); 5. System.out.println("相隔的天数="+day); ⼀年前的⽇期: Java代码 1. java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd"); 2. java.util.Date todayDate=new java.util.Date(); 3. long beforeTime=(todayDate.getTime()/1000)-60*60*24*365; 4. todayDate.setTime(beforeTime*1000); 5. String beforeDate=formatter.format(todayDate); 6. System.out.println(beforeDate); ⼀年后的⽇期: Java代码 1. java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd"); 2. java.util.Date todayDate=new java.util.Date(); 3. long afterTime=(todayDate.getTime()/1000)+60*60*24*365; 4. todayDate.setTime(afterTime*1000); 5. String afterDate=formatter.format(todayDate); 6. System.out.println(afterDate); 求10⼩时后的时间 Java代码 1. java.util.Calendar Cal=java.util.Calendar.getInstance(); 2. Cal.setTime(dateOper); 3. Cal.add(java.util.Calendar.HOUR_OF_DAY,10); 4. System.out.println("date:"+forma.format(Cal.getTime())); 求10⼩时前的时间 Java代码 1. java.util.Calendar Cal=java.util.Calendar.getInstance(); 2. Cal.setTime(dateOper); 3. Cal.add(java.util.Calendar.HOUR_OF_DAY,-10); 4. System.out.println("date:"+forma.format(Cal.getTime())); 3.java.sql.Date 继承⾃java.util.Date,是操作数据库⽤的⽇期类型 Java代码 1. java.sql.Date sqlDate = new java.sql.Date(java.sql.Date.valueOf("2007-12-25").getTime()); ⽇期⽐较:简单的⽐较可以以字符串的形式直接⽐较,也可使⽤ java.sql.Date.valueOf("2007-03-08").compareTo(java.sql.Date.valueOf("2007-03-18"))⽅式来⽐较⽇期的⼤⼩.也可使⽤java.util.Date.after(java.util.Date)来⽐较. 相差时间: long difference=c2.getTimeInMillis()-c1.getTimeInMillis(); 相差天数:long day=difference/(3600*24*1000) 相差⼩时:long hour=difference/(3600*1000) 相差分钟:long minute=difference/(60*1000) 相差秒: long second=difference/1000 疯狂软件教育中⼼依托开发团队的强⼤技术实⼒,把企业最新技术融⼊实训课程,打造⾦牌的品质,才能给予学员黄⾦的未来,疯狂软件凭借过硬的技术实⼒与丰富的项⽬开发经验,赢得了社会的肯定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java日期时间一、Java中的日期概述日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题。
日期属性也属于普通属性,普通属性的配置规则也适用于日期属性。
日期属性又包括只有日期没有时间(即java.sql.Date)、没有日期只有时间(即java.sql.Time)、既有日期也有时间(即java.sql.Timestamp)等3种情况,因此要多一些配置。
由于 java.sql.Date、java.sql.Time、java.sql.Timestamp 都是java.util.Date的子类,因此日期属性直接使用父类java.util.Date就可以了,Hibernate会根据日期属性的配置决定该类型是java.sql.Date、 java.sql.Time还是java.sql.Timestamp。
在Java语言中,时间的表达单位是毫秒。
也就是说,Java语言中的时间处理可以精确到毫秒。
二,功能说明所设计的程序可以准确的进行时间和日期查询,而且便于修改。
可以添加其他设置。
在程序中未设计时区。
在Java语言中,表达时间的方式有两种:a、绝对时间。
以直观的形式来表达某个时间点,例如2009年10月10号0点0分0秒。
使用这种形式表达时间,使用起来比较直观,但是不方便进行时间之间的计算。
例如无法很直观的计算2020年1月1号0点0分0秒和上面这个时间之间相差多少天。
绝对时间以对象的形式进行表达,Java API中提供了java.util包中的Date类和Calendar类的对象进行表达。
b、相对时间。
以一个long型的数字表达某个时间点。
例如102847423468.使用这种方式的优缺点和绝对时间刚好相反。
这种方式很方便时间之间的计算,但是阅读起来很不直观。
在Java API中以需要表达的时间点,例如2009年10月10号0点0分0秒,和GMT (格林威治时间,也就是伦敦时间)1970年1月1号0点0分0秒之间相差的毫秒数作为相对时间的数值,如果该时间在这个时间只好,则相对时间为正数,否则相对时间为负数。
Java API中提供了ng包中的System类的currentTimeMillis方法,获得以相对时间形式描述的当前系统时间。
在实际使用时,绝对时间和相对时间之间可以很方便的进行转换。
三.程序类和用户使用说明,软件系统测试说明:java.util.Calendar(抽象类)Calendar 类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
与其他语言环境敏感类一样,Calendar 提供了一个类方法getInstance,以获得此类型的一个通用的对象。
Calendar 的getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。
5、java.util.GregorianCalendar(Calendar的直接子类)GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。
GregorianCalendar 是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家是在 1582 年 10 月 15 日创立,在其他国家要晚一些)。
可由调用方通过调用setGregorianChange() 来更改起始日期。
4、java.util.Calendar(抽象类)java.util.Calendar是个抽象类,是系统时间的抽象表示,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
与其他语言环境敏感类一样,Calendar 提供了一个类方法getInstance,以获得此类型的一个通用的对象。
Calendar 的getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化。
一个Calendar的实例是系统时间的抽象表示,从Calendar的实例可以知道年月日星期月份时区等信息。
Calendar类中有一个静态方法get(int x),通过这个方法可以获取到相关实例的一些值(年月日星期月份等)信息。
参数x是一个产量值,在Calendar中有定义。
Calendar中些陷阱,很容易掉下去:1、Calendar的星期是从周日开始的,常量值为0。
2、Calendar的月份是从一月开始的,常量值为0。
3、Calendar的每个月的第一天值为1。
5、java.util.GregorianCalendar(Calendar的直接子类)GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。
结合Calendar抽象类使用。
下面给出一个综合实例看看Calendar类的用法:import java.util.*;import java.text.SimpleDateFormat;/*** Created by IntelliJ IDEA.* User: leizhimin* Date: 2007-11-30* Time: 15:06:57* Calendar的使用测试*/public class TestCalendar {public static void main(String args[]) {TestCalendar testCalendar = new TestCalendar();testCalendar.testCalendar();}public void testCalendar() {//创建Calendar的方式Calendar now1 = Calendar.getInstance();Calendar now2 = new GregorianCalendar();Calendar now3 = new GregorianCalendar(2007, 10, 30); Calendar now4 = new GregorianCalendar(2007, 10, 30, 15, 55); //陷阱:Calendar的月份是0~11Calendar now5 = new GregorianCalendar(2007, 10, 30, 15, 55, 44);Calendar now6 = new GregorianCalendar();Calendar now7 = new GregorianCalendar(TimeZone.getTimeZone("GMT-8:00"));//通过日期和毫秒数设置Calendarnow2.setTime(new Date());System.out.println(now2);now2.setTimeInMillis(new Date().getTime());System.out.println(now2);//定义日期的中文输出格式,并输出日期SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒 E", Locale.CHINA);System.out.println("获取日期中文格式化化输出:" + df.format(now5.getTime()));System.out.println();System.out.println("--------通过Calendar获取日期中年月日等相关信息--------");System.out.println("获取年:" + now5.get(Calendar.YEAR));System.out.println("获取月(月份是从0开始的):" + now5.get(Calendar.MONTH));System.out.println("获取日:" + now5.get(Calendar.DAY_OF_MONTH));System.out.println("获取时:" + now5.get(Calendar.HOUR));System.out.println("获取分:" + now5.get(Calendar.MINUTE));System.out.println("获取秒:" + now5.get(Calendar.SECOND));System.out.println("获取上午、下午:" + now5.get(Calendar.AM_PM));System.out.println("获取星期数值(星期是从周日开始的):" + now5.get(Calendar.DAY_OF_WEEK));System.out.println();System.out.println("---------通用星期中文化转换---------");String dayOfWeek[] = {"", "日", "一", "二", "三", "四", "五", "六"};System.out.println("now5对象的星期是:" + dayOfWeek[now5.get(Calendar.DAY_OF_WEEK)]);System.out.println();System.out.println("---------通用月份中文化转换---------");String months[] = {"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"};System.out.println("now5对象的月份是: " + months[now5.get(Calendar.MONTH)]);}}运行结果:java.util.GregorianCalendar[time=1196414388324,areFieldsSet =true,areAllFieldsSet=true,lenient=true,zone=sun.util.calen dar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings= 0,useDaylight=false,transitions=19,lastRule=null],firstDayO fWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=10,W EEK_OF_YEAR=48,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR= 334,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=5,HOU R_OF_DAY=17,MINUTE=19,SECOND=48,MILLISECOND=324,ZONE_OFFSET =28800000,DST_OFFSET=0]java.util.GregorianCalendar[time=1196414388324,areFieldsSet =true,areAllFieldsSet=true,lenient=true,zone=sun.util.calen dar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings= 0,useDaylight=false,transitions=19,lastRule=null],firstDayO fWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2007,MONTH=10,W EEK_OF_YEAR=48,WEEK_OF_MONTH=5,DAY_OF_MONTH=30,DAY_OF_YEAR= 334,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=5,AM_PM=1,HOUR=5,HOU R_OF_DAY=17,MINUTE=19,SECOND=48,MILLISECOND=324,ZONE_OFFSET =28800000,DST_OFFSET=0]获取日期中文格式化化输出:2007年11月30日 03时55分44秒星期五--------通过Calendar获取日期中年月日等相关信息-------- 获取年:2007获取月(月份是从0开始的):10获取日:30获取时:3获取分:55获取秒:44获取上午、下午:1获取星期数值(星期是从周日开始的):6---------通用星期中文化转换---------now5对象的星期是:五---------通用月份中文化转换---------now5对象的月份是: 十一月Process finished with exit code 0四、总结Java中日期的经常有一下五个方面:1、创建日期2、日期格式化显示3、日期的转换(主要是和字符串之间的相互转换)4、日期中年、月、日、时、分、秒、星期、月份等获取。