java.util 패키지는 현재 날짜와 시간을 캡슐화하는 Date 클래스를 제공합니다. Date 클래스는 Date 객체를 인스턴스화하는 두 개의 생성자를 제공합니다.
첫 번째 생성자는 현재 날짜와 시간을 사용하여 객체 를 초기화합니다.
Date( )
두 번째 생성자는 1970년 1월 1일 이후의 밀리초인 매개변수를 받습니다.
Date(long millisec)
Date 객체가 생성된 후 다음 메소드를 호출할 수 있습니다.
Serial number | Method 설명 |
---|---|
1 | boolean after(Date date), 호출하는 Date 객체가 이 메서드는 날짜 이후에 true를 반환하고, 그렇지 않으면 false |
boolean before(Date date)를 반환합니다. 이 메서드를 호출하는 Date 객체가 지정된 날짜 이전에 true를 반환하면 그렇지 않으면 false | |
Object clone( )은 이 객체의 복사본을 반환합니다. | |
int CompareTo(Date date)는 지정된 날짜와 함께 이 메서드가 호출될 때 Date 객체를 비교합니다. 둘이 같으면 0이 반환됩니다. 호출 객체가 지정된 날짜 이전이면 음수가 반환됩니다. 호출 객체는 지정된 날짜 | |
int CompareTo(Object obj) 이후에 양수를 반환합니다. obj가 Date 유형인 경우 작업은 CompareTo(Date)와 동일합니다. 그렇지 않으면 ClassCastException | |
boolean equals(Object date)가 발생하고, 이 메소드를 호출하는 Date 객체가 지정된 날짜와 같을 때 true를 반환하고, 그렇지 않으면 false | |
long getTime()을 반환하고, 반환합니다. 1970년 1월 1일 00:00:00 GMT | |
int hashCode( ) 이후 이 Date 객체가 나타내는 밀리초 수는 이 객체의 해시 코드 값을 반환합니다. | |
void setTime( 오랜 시간), 1970년 1월 1일 00:00:00 GMT | |
String toString() 이후의 밀리초 수를 사용하여 시간과 날짜를 설정하고, 이 Date 객체를 다음 형식의 문자열로 변환합니다. mon dd hh:mm:ss zzz yyyy 여기서: dow는 요일(Sun, Mon, Tue, Wed, Thu, Fri, Sat)입니다. |
: import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
// 初始化 Date 对象
Date date = new Date();
// 使用 toString() 函数显示日期时间
System.out.println(date.toString());
}
}
// 实例编译运行结果如下:
// Tue Apr 04 22:50:40 CST 2023
Date 비교
. SimpleDateFormat을 사용하면 실행할 사용자 정의 날짜-시간 형식을 선택할 수 있습니다. 예: import java.util.*;
import java.text.*;
public class DateDemo {
public static void main(String[] args) {
Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
System.out.println("当前时间为: " + ft.format(dNow));
}
}
// 实例编译运行结果如下:
// 当前时间为: 2023-04-04 10:55:24
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss"); 이 코드 줄은 변환 형식을 설정합니다. 여기서 yyyy는 전체 AD 연도, MM은 월, dd입니다. 는 날짜이고, HH:mm:ss는 시, 분, 초입니다.
: 일부 형식은 대문자이고 일부 형식은 소문자입니다. 예를 들어 MM은 월, mm은 분, HH는 12시간 형식입니다. 날짜 및 시간의 형식 인코딩
설명 | 샘플 | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
纪 | |||||||||||||||||||||||||||||||||||||||||||
y | |||||||||||||||||||||||||||||||||||||||||||
2001 | M | ||||||||||||||||||||||||||||||||||||||||||
7월 또는 07 | d | ||||||||||||||||||||||||||||||||||||||||||
10 | h | ||||||||||||||||||||||||||||||||||||||||||
12 | H | ||||||||||||||||||||||||||||||||||||||||||
22 | m | ||||||||||||||||||||||||||||||||||||||||||
30 | s | ||||||||||||||||||||||||||||||||||||||||||
55 | ㅋㅋㅋ | F | |||||||||||||||||||||||||||||||||||||||||
2(7월 둘째 수요일) | w | ||||||||||||||||||||||||||||||||||||||||||
40 | W | ||||||||||||||||||||||||||||||||||||||||||
1 | a | ||||||||||||||||||||||||||||||||||||||||||
10 | z | ||||||||||||||||||||||||||||||||||||||||||
동부 표준시 | ' | ||||||||||||||||||||||||||||||||||||||||||
구분 기호 | " | ||||||||||||||||||||||||||||||||||||||||||
` |
使用printf格式化日期printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。
printf格式化日期实例: 格式化日期: import java.util.Date; public class DateFormatExample { public static void main(String[] args) { Date date = new Date(); System.out.printf("%tY-%tm-%td %tH:%tM:%tS %tZ", date, date, date, date, date, date, date); } } // 执行输出结果为: // 2023-04-05 09:59:23 CST 使用转换符格式化日期: import java.util.Date; public class DateDemo { public static void main(String[] args) { // 初始化 Date 对象 Date date = new Date(); //c的使用 System.out.printf("全部日期和时间信息:%tc%n",date); //f的使用 System.out.printf("年-月-日格式:%tF%n",date); //d的使用 System.out.printf("月/日/年格式:%tD%n",date); //r的使用 System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date); //t的使用 System.out.printf("HH:MM:SS格式(24时制):%tT%n",date); //R的使用 System.out.printf("HH:MM格式(24时制):%tR",date); } } // 实例编译运行结果如下: // 全部日期和时间信息:星期三 四月 05 10:06:21 CST 2023 // 年-月-日格式:2023-04-05 // 月/日/年格式:04/05/23 // HH:MM:SS PM格式(12时制):10:06:21 上午 // HH:MM:SS格式(24时制):10:06:21 // HH:MM格式(24时制):10:06 如果你需要重复提供日期,那么利用这种方式来格式化它的每一部分就有点复杂了。因此,可以利用一个格式化字符串指出要被格式化的参数的索引。索引必须紧跟在 % 后面,而且必须以 $ 结束。例如: import java.util.Date; public class DateDemo { public static void main(String[] args) { // 初始化 Date 对象 Date date = new Date(); // 使用toString()显示日期和时间 // %1$索引指向 "Due date:" // %2$索引指向 date System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date); } } // 实例编译运行结果如下: // Due date: 四月 05, 2023 或者,你可以使用 < 标志。它表明先前被格式化的参数要被再次使用。例如: import java.util.Date; public class DateDemo { public static void main(String[] args) { // 初始化 Date 对象 Date date = new Date(); // 显示格式化时间 System.out.printf("%s %tB %<te, %<tY", "Due date:", date); } } // 实例编译运行结果如下: // Due date: 四月 5, 2023 定义日期格式的转换符可以使日期通过指定的转换符生成新字符串。这些日期转换符如下所示: import java.util.*; public class DateDemo { public static void main(String[] args) { Date date=new Date(); //b的使用,月份简称 String str=String.format(Locale.US,"英文月份简称:%tb",date); System.out.println(str); System.out.printf("本地月份简称:%tb%n",date); //B的使用,月份全称 str=String.format(Locale.US,"英文月份全称:%tB",date); System.out.println(str); System.out.printf("本地月份全称:%tB%n",date); //a的使用,星期简称 str=String.format(Locale.US,"英文星期的简称:%ta",date); System.out.println(str); //A的使用,星期全称 System.out.printf("本地星期的简称:%tA%n",date); //C的使用,年前两位 System.out.printf("年的前两位数字(不足两位前面补0):%tC%n",date); //y的使用,年后两位 System.out.printf("年的后两位数字(不足两位前面补0):%ty%n",date); //j的使用,一年的天数 System.out.printf("一年中的天数(即年的第几天):%tj%n",date); //m的使用,月份 System.out.printf("两位数字的月份(不足两位前面补0):%tm%n",date); //d的使用,日(二位,不够补零) System.out.printf("两位数字的日(不足两位前面补0):%td%n",date); //e的使用,日(一位不补零) System.out.printf("月份的日(前面不补0):%te",date); } } // 输出结果为: // 英文月份简称:Apr // 本地月份简称:四月 // 英文月份全称:April // 本地月份全称:四月 // 英文星期的简称:Wed // 本地星期的简称:星期三 // 年的前两位数字(不足两位前面补0):20 // 年的后两位数字(不足两位前面补0):23 // 一年中的天数(即年的第几天):095 // 两位数字的月份(不足两位前面补0):04 // 两位数字的日(不足两位前面补0):05 // 月份的日(前面不补0):5 解析字符串为时间SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。例如: import java.util.*; import java.text.*; public class DateDemo { public static void main(String[] args) { SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); String input = args.length == 0 ? "1818-11-11" : args[0]; System.out.print(input + " Parses as "); Date t; try { t = ft.parse(input); System.out.println(t); } catch (ParseException e) { System.out.println("Unparseable using " + ft); } } } // 实例编译运行结果如下: // 1818-11-11 Parses as Wed Nov 11 00:00:00 CST 1818 休眠(sleep)sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会。你可以让程序休眠一毫秒的时间或者到您的计算机的寿命长的任意段时间。例如,下面的程序会休眠3秒: import java.util.*; public class SleepDemo { public static void main(String[] args) { try { System.out.println(new Date( ) + "\n"); Thread.sleep(1000*3); // 休眠3秒 System.out.println(new Date( ) + "\n"); } catch (Exception e) { System.out.println("Got an exception!"); } } } // 实例编译运行结果如下: // Thu Apr 06 11:18:56 CST 2023 // Thu Apr 06 11:18:59 CST 2023 测量时间间隔(以毫秒为单位)的实例:\color{red}{测量时间间隔(以毫秒为单位)的实例 :}测量时间间隔(以毫秒为单位)的实例: import java.util.*; public class DiffDemo { public static void main(String[] args) { try { long start = System.currentTimeMillis( ); System.out.println(new Date( ) + "\n"); Thread.sleep(5*60*10); System.out.println(new Date( ) + "\n"); long end = System.currentTimeMillis( ); long diff = end - start; System.out.println("Difference is : " + diff); } catch (Exception e) { System.out.println("Got an exception!"); } } } // 实例编译运行结果如下: // Thu Apr 06 11:25:14 CST 2023 // Thu Apr 06 11:25:17 CST 2023 // Difference is : 3038 Calendar类我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。 Calendar类的功能要比Date类强大很多,但在实现方式上也比Date类要复杂一些。 Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。例如创建一个代表系统当前日期的Calendar对象: Calendar c = Calendar.getInstance();//默认是当前日期 或者创建一个指定日期的Calendar对象(注:Calendar 的月份是从 0 开始的): //创建一个代表2009年6月12日的Calendar对象 Calendar c1 = Calendar.getInstance(); c1.set(2009, 6 - 1, 12); Calendar类对象字段类型:Calendar类中用以下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想:
Calendar类对象信息的设置 set设置: 调用 public final void set(int year,int month,int date) 方法。例如: Calendar c1 = Calendar.getInstance(); c1.set(2009, 6, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12 如果只设定某个字段,例如日期的值,则可以使用 public void set(int field,int value) 方法。例如,把 c1对象代表的日期设置为10号,其他的所有数值会被重新计算: Calendar c1 = Calendar.getInstance(); c1.set(Calendar.DATE,10); 其他字段属性set的意义以此类推。 add设置: 把c1对象的日期加上10,也就是c1也就表示为10天后的日期,其它所有的数值会被重新计算: Calendar c1 = Calendar.getInstance(); c1.add(Calendar.DATE, 10); 把c1对象的日期减去10,也就是c1也就表示为10天前的日期,其它所有的数值会被重新计算: Calendar c1 = Calendar.getInstance(); c1.add(Calendar.DATE, -10); 其他字段属性的add的意义以此类推。 Calendar类对象信息的获得 Calendar c1 = Calendar.getInstance(); // 获得年份 int year = c1.get(Calendar.YEAR); // 获得月份 int month = c1.get(Calendar.MONTH) + 1; // 获得日期 int date = c1.get(Calendar.DATE); // 获得小时 int hour = c1.get(Calendar.HOUR_OF_DAY); // 获得分钟 int minute = c1.get(Calendar.MINUTE); // 获得秒 int second = c1.get(Calendar.SECOND); // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推) int day = c1.get(Calendar.DAY_OF_WEEK); GregorianCalendar类Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。Calendar 的getInstance()方法返回一个默认用当前的语言环境和时区初始化的GregorianCalendar对象。GregorianCalendar定义了两个字段:AD和BC。这是代表公历定义的两个时代。 下面列出GregorianCalendar对象的几个构造方法:
这里是GregorianCalendar 类提供的一些尝用的方法列表:
GregorianCalendar 使用实例: mport java.util.*; public class GregorianCalendarDemo { public static void main(String[] args) { String months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; int year; // 初始化 Gregorian 日历 // 使用当前时间和日期 // 默认为本地时间和时区 GregorianCalendar gcalendar = new GregorianCalendar(); // 显示当前时间和日期的信息 System.out.print("Date: "); System.out.print(months[gcalendar.get(Calendar.MONTH)]); System.out.print(" " + gcalendar.get(Calendar.DATE) + " "); System.out.println(year = gcalendar.get(Calendar.YEAR)); System.out.print("Time: "); System.out.print(gcalendar.get(Calendar.HOUR) + ":"); System.out.print(gcalendar.get(Calendar.MINUTE) + ":"); System.out.println(gcalendar.get(Calendar.SECOND)); // 测试当前年份是否为闰年 if(gcalendar.isLeapYear(year)) { System.out.println("当前年份是闰年"); } else { System.out.println("当前年份不是闰年"); } } } // 实例编译运行结果如下: // Date: Apr 6 2023 // Time: 3:35:13 // 当前年份不是闰年 方法实例:\color{red}{方法实例:}方法实例: 时间戳转换成时间: public class Test { public static void main(String args[]) { // 获取当前时间戳 Long timeStamp = System.currentTimeMillis(); // 时间格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 时间戳转换成时间 String sd = sdf.format(new Date(Long.parseLong(String.valueOf(timeStamp)))); System.out.println("格式化结果:" + sd); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy 年 MM 月 dd 日 HH 时 mm 分 ss 秒"); String sd2 = sdf2.format(new Date(Long.parseLong(String.valueOf(timeStamp)))); System.out.println("格式化结果:" + sd2); } } // 实例编译运行结果如下: // 格式化结果:2023-04-23 14:24:13 // 格式化结果:2023 年 04 月 23 日 14 时 24 分 13 秒 |
위 내용은 Java에서 Date 날짜 및 시간 클래스를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!