Date类
获取当前日期时间
import java.util.Date;
public class 获取当前日期时间 {
public static void main(String[] args) {
// 初始化 Date 对象
Date date = new Date();
// 使用 toString() 函数显示日期时间
System.out.println(date.toString());
}
}
执行结果
Wed Jan 12 23:12:18 CST 2022
格式化日期时间
1.SimpleDateFormat格式化日期时间
yyyy
年,
MM
月(01-12)
,
dd
日(01-31)
,
hh
时/12(01-12)
,
HH
时/24(00-23)
,
mm
分(0-59)
,
ss
秒(0-59)
,
SSS
毫秒(000-999)
,
E
周几(一二三四五六日)
,
EEEE
星期几(一二三四五六日)
,
D
今年的第几天(1-365)
,
F
今年的第几周(按日划分,7天为一周)
,
w
今年的第几周(按星期划分,周日为第1天,周六为第7天)
,
W
本月的第几周(按星期划分,周日为第1天,周六为第7天)
,
k
今天的第几小时(1:00-2:00是第1小时,0:00-1:00是第24小时)
,
a
上午/下午标记
,
K
上午/下午的第几小时/第几小时,
(0:00-1:00是第0小时,11:00-12:00是第11小时)
(12:00-13:00是第0小时,23:00-0:00是第11小时)
G
公元标记
,
z
时区标记
import java.util.*;
import java.text.*;
public class 格式化日期时间 {
public static void main(String[] args) {
Date dateTime = new Date( );
//SimpleDateFormat格式化日期时间
SimpleDateFormat date = new SimpleDateFormat ("yyyy-MM-dd");
System.out.println("年-月-日: " + date.format(dateTime));
SimpleDateFormat time = new SimpleDateFormat ("hh:mm:ss.SSS");
System.out.println("时:分:秒.毫秒: " + time.format(dateTime));
SimpleDateFormat weekday = new SimpleDateFormat ("E/EEEE");
System.out.println("周/星期: " + weekday.format(dateTime));
SimpleDateFormat year_day = new SimpleDateFormat ("D");
System.out.println("今年的第几天: " + year_day.format(dateTime));
SimpleDateFormat year_weekday = new SimpleDateFormat ("F");
System.out.println("今年的第几周(按日划分,7天为一周): " + year_weekday.format(dateTime));
SimpleDateFormat year_week = new SimpleDateFormat ("w");
System.out.println("今年的第几周(按星期划分,周日为第1天,周六为第7天): " + year_week.format(dateTime));
SimpleDateFormat month_week = new SimpleDateFormat ("W");
System.out.println("本月的第几周(按星期划分,周日为第1天,周六为第7天): " + month_week.format(dateTime));
SimpleDateFormat day_hour = new SimpleDateFormat ("k");
System.out.println("今天的第几小时(1:00-2:00是第1小时,0:00-1:00是第24小时): " + day_hour.format(dateTime));
//`(0:00-1:00是第0小时,11:00-12:00是第11小时)`
//`(12:00-13:00是第0小时,23:00-0:00是第11小时)`
SimpleDateFormat AMPM = new SimpleDateFormat ("aK");
System.out.println("上午/下午的第几小时/第几小时: " + AMPM.format(dateTime));
SimpleDateFormat AD = new SimpleDateFormat ("G");
System.out.println("公元标记: " + AD.format(dateTime));
SimpleDateFormat zone = new SimpleDateFormat ("z");
System.out.println("时区标记: " + zone.format(dateTime));
}
}
执行结果
年-月-日: 2022-01-15
时:分:秒.毫秒: 01:24:16.682
周/星期: 周六/星期六
今年的第几天: 15
今年的第几周(按日划分,7天为一周): 3
今年的第几周(按星期划分,周日为第1天,周六为第7天): 3
本月的第几周(按星期划分,周日为第1天,周六为第7天): 3
今天的第几小时(1:00-2:00是第1小时,0:00-1:00是第24小时): 13
上午/下午的第几小时/第几小时: 下午1
公元标记: 公元
时区标记: CST
2.printf格式化日期时间
%t
开头 %n
换行
普通格式化模板
%tc
"全部信息"格式:星期日 一月 31 18:18:18 CST 2022
%tF
"年-月-日"格式:2022-01-31
%tD
"月/日/年"格式:01/31/22
%tr
“HH:MM:SS PM”(12时制)格式:06:18:18 下午
%tT
“HH:MM:SS”(24时制)格式:18:18:18
%tR
“HH:MM”(24时制)格式:18:18
import java.util.*;
public class printf {
public static void main(String[] args) {
Date date = new Date();
/* 普通格式化模板 */
System.out.printf("全部信息:%tc%n", date);
System.out.printf("年-月-日:%tF%n", date);
System.out.printf("月/日/年:%tD%n", date);
System.out.printf("时:分:秒 上/下午:%tr%n", date);
System.out.printf("时:分:秒:%tT%n", date);
System.out.printf("时:分:%tR%n", date);
}
}
执行结果
全部信息:周一 1月 17 00:07:58 CST 2022
年-月-日:2022-01-17
月/日/年:01/17/22
时:分:秒 上/下午:12:07:58 上午
时:分:秒:00:07:58
时:分:00:07
往往有些时候我们不喜欢这种style
输出字符串类型
%s
表示输出字符串
%S
将字符串以大写形式输出
支持多个参数
import java.util.*;
public class printf {
public static void main(String[] args) {
Date date = new Date();
/* 输出字符串 */
System.out.printf("输出字符串:%s%n", 2022);
System.out.printf("输出字符串并换行:%s%n", "2022");
System.out.printf("多个参数输出:%s = %s%n", "Name", "Weijun");
System.out.printf("大写形式输出:%S = %s%n", "Name", "WeiJun");
System.out.printf("按编号输出:%2$s = %3$s %1$s%n", "jun", "Name", "Wei");
}
}
执行结果
输出字符串:2022
输出字符串并换行:2022
多个参数输出:Name = Weijun
大写形式输出:NAME = WeiJun
按编号输出:Name = Wei jun
输出布尔类型
%b
输出boolean类型
import java.util.*;
public class printf {
public static void main(String[] args) {
Date date = new Date();
System.out.printf("a = %b;%n", true);
System.out.printf("b = %b;%n", false);
}
}
执行结果
a = true;
b = false;
输出整数类型
%d
10进制整数
%o
8进制整数
%x
16进制整数
%X
16进制整数(字母大写)
import java.util.*;
public class printf {
public static void main(String[] args) {
Date date = new Date();
Integer aObj = 901;
System.out.printf("10进制整数:%d; %d; %d%n", -901, 901L, aObj);
System.out.printf(" 8进制整数:%o; %o; %o%n", -901, 901L, aObj);
System.out.printf("16进制整数:%x; %x; %x%n", -901, 901L, aObj);
System.out.printf("16进制整数(字母大写):%X; %X; %X%n", -901, 901L, aObj);
}
}
执行结果
10进制整数:-901; 901; 901
8进制整数:37777776173; 1605; 1605
16进制整数:fffffc7b; 385; 385
16进制整数(字母大写):FFFFFC7B; 385; 385
输出浮点类型
%e
科学计数法输出浮点数
%E
科学计数法输出浮点数(大写形式)
%f
十进制输出浮点数
%.1f
十进制输出浮点数,1位小数
%.3f
十进制输出浮点数,3位小数
import java.util.*;
public class printf {
public static void main(String[] args) {
Date date = new Date();
/* 输出浮点类型 */
Double dObj = 90.1d;
System.out.printf("科学计数法(输出):%e; %e; %e%n", -123.456f, 987.123456d, dObj);
System.out.printf("科学计数法(大写):%E; %E; %E%n", -123.456f, 987.123456d, dObj);
System.out.printf("十进制输出:%f; %f; %f%n", -123.456f, 987.123456d, dObj);
System.out.printf("设置小数点后几位:%.1f; %.3f; %f%n", -123.456f, 987.123456d, dObj);
}
}
执行结果
科学计数法(输出):-1.234560e+02; 9.871235e+02; 9.010000e+01
科学计数法(大写):-1.234560E+02; 9.871235E+02; 9.010000E+01
十进制输出:-123.456001; 987.123456; 90.100000
设置小数点后几位:-123.5; 987.123; 90.100000
输出日期类型
%t
格式化日期时间类型
%T
格式化日期时间类型(大写)
%ty
输出年(2位数)
%tY
输出年(4位数)
%tm
输出月
%tb
输出月份简称
%tB
输出月份完整名
%td
输出日
import java.util.*;
public class printf {
public static void main(String[] args) {
Date date = new Date();
long data = date.getTime();
System.out.printf("%1$ty-%1$tm-%1$td%n%2$ty-%2$tm-%2$td%n", date, data);
System.out.printf("%1$tY-%1$tB-%1$td%n%2$tY-%2$tb-%2$td%n", date, data);
}
}
执行结果
22-01-17
22-01-17
2022-一月-17
2022-1月-17
输出时间类型
%tI
输出时(12进制)
%tH
输出时(24进制)
%tM
输出分
%tS
输出秒
%tL
输出毫秒
%tp
输出上/下午
import java.util.*;
public class printf {
public static void main(String[] args) {
Date date = new Date();
/* 输出时间类型 */
System.out.printf("时:分:秒.毫秒 上/下午(12进制):%1$tI:%1$tM:%1$tS.%1$tL%1$tp%n", date);
System.out.printf("时:分:秒.毫秒 上/下午(24进制):%1$tH:%1$tM:%1$tS.%1$tL%1$tp%n", date);
}
}
执行结果
时:分:秒.毫秒 上/下午(12进制):06:18:18.888下午
时:分:秒.毫秒 上/下午(24进制):18:18:18.888下午
输出星期
%tA星期全称
%ta星期简称
import java.util.*;
public class printf {
public static void main(String[] args) {
Date date = new Date();
System.out.printf("星期全称:%1$tA%n", date);
System.out.printf("星期简称:%1$ta%n", date);
}
}
执行结果
星期全称:星期一
星期简称:周一
休眠
import java.util.*;
public class sleep {
public static void main(String[] args) {
try {
System.out.println(new Date());
// 线程休眠3秒
Thread.sleep(1000*3);
System.out.println(new Date());
} catch (Exception e) {
System.out.println("发现异常");
}
}
}
执行结果
Mon Jan 17 12:56:13 CST 2022
Mon Jan 17 12:56:16 CST 2022
可以看出,的确是差了3秒
测量时间
import java.util.*;
public class sleep {
public static void main(String[] args) {
try {
long start = System.currentTimeMillis( );
System.out.println(new Date());
Thread.sleep(1000*1);
System.out.println(new Date());
long end = System.currentTimeMillis( );
long diff = end - start;
System.out.println("睡了多久:"+diff+"毫秒="+(diff/1000)+"秒");
} catch (Exception e) {
System.out.println("发现异常");
}
}
}
执行结果
Mon Jan 17 13:20:33 CST 2022
Mon Jan 17 13:20:34 CST 2022
睡了多久:1029毫秒=1秒
Calendar类
创建日期时间对象
Calendar c = Calendar.getInstance();
获取日期时间
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
int millSecond = c.get(Calendar.MILLISECOND);
int day = c.get(Calendar.DAY_OF_WEEK)-1;
String[] months = {"01","02","03","04","05","06","07","08","09","10","11","12"};
String[] days = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
输出日期时间
System.out.println(year+"-"+months[month]+"-"+date+" "+hour+":"+minute+":"+second+"."+millSecond+" "+days[day]);
设置日期时间
c.set(2022, 0, 19, 18, 18, 18);
改变日期时间
c.add(Calendar.YEAR,0);
c.add(Calendar.MONTH,0);
c.add(Calendar.DATE,0);
c.add(Calendar.HOUR_OF_DAY,0);
c.add(Calendar.MINUTE,0);
c.add(Calendar.SECOND,0);
c.add(Calendar.MILLISECOND,0);
实例
import java.util.Calendar;
public class 日期时间 {
public static void main(String[] args) {
//创建日期时间对象
Calendar c = Calendar.getInstance();
//设置日期时间
c.set(2022, 0, 19,18,18,18);
//改变日期时间
c.add(Calendar.YEAR,0);
c.add(Calendar.MONTH,0);
c.add(Calendar.DATE,0);
c.add(Calendar.HOUR_OF_DAY,0);
c.add(Calendar.MINUTE,0);
c.add(Calendar.SECOND,0);
c.add(Calendar.MILLISECOND,0);
//获取日期时间
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
int millSecond = c.get(Calendar.MILLISECOND);
int day = c.get(Calendar.DAY_OF_WEEK)-1;
String[] months = {"01","02","03","04","05","06","07","08","09","10","11","12"};
String[] days = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
//输出日期时间
System.out.println(year+"-"+months[month]+"-"+date+" "+hour+":"+minute+":"+second+"."+millSecond+" "+days[day]);
}
}
执行结果
2022-01-19 17:49:29.888 星期三