Date和SimpleDateFormat

Java和Android中的日期类,Date和SimpleDateFormat。

Date

Java中使用Date类来描述日期时间,直接创建对象并且打印日志会得到当前程序执行时间的date对象

Date date = new Date();

Log.d(TAG, "getCalendar: "+date);

得到的打印日志如下

getCalendar: Tue Mar 19 10:08:39 GMT+08:00 2024

Tue星期二  Mar19:三月19  10:08:39  GMT+08:00:东八区  2024年。

这里的时区是根据程序运行的系统设置的时区而确定的,如果是Android程序,就根据运行在设备上的时区而定,若是java程序,则是根据运行Java代码的电脑系统时区而定。我尝试将手机更改了一个时区,结果输出的时区就变了。

想要手动更改时区,可以通过TimeZone,具体做法如下,这里字符串代表亚洲/东京,即东九区。


// 创建一个TimeZone对象,表示东京时区
TimeZone timeZone = TimeZone.getTimeZone("Asia/Tokyo");
// 创建一个SimpleDateFormat对象,用于格式化日期
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss 'GMT'Z");
// 设置时区
dateFormat.setTimeZone(timeZone);
// 创建一个Date对象,表示当前时间
Date date = new Date();
// 格式化当前时间,并输出
String currentTime = dateFormat.format(date);
Log.d(TAG, "Current time in East 9th zone (Tokyo): " + currentTime);

输出的时间如下:

以下是一些常用的时区:

时区

表达方式

所处地区

国际日期变更线(IDLW)

Etc/GMT+12

贝克岛、科斯拉伊岛

夏威夷时间(HST)

Pacific/Honolulu

美国夏威夷州

阿拉斯加时间(AKST)

America/Anchorage

美国阿拉斯加州

太平洋时间(PST)

America/Los_Angeles

美国太平洋沿岸地区

山地时间(MST)

America/Denver

美国山地地区

中部时间(CST)

America/Chicago

美国中部地区

东部时间(EST)

America/New_York

美国东部地区

大西洋时间(AST)

America/Halifax

加拿大大西洋省份

加拿大时间(NST)

America/St_Johns

加拿大纽芬兰省

西格林尼治标准时间(GMT)

Europe/London

英国伦敦

中欧时间(CET)

Europe/Paris

法国巴黎

东欧时间(EET)

Europe/Istanbul

土耳其伊斯坦布尔

莫斯科标准时间(MSK)

Europe/Moscow

俄罗斯莫斯科

迪拜标准时间(GST)

Asia/Dubai

阿联酋迪拜

印度标准时间(IST)

Asia/Kolkata

印度新德里

中国标准时间(CST)

Asia/Shanghai

中国北京、上海

日本标准时间(JST)

Asia/Tokyo

日本东京

澳大利亚东部标准时间(AEST)

Australia/Sydney

澳大利亚悉尼

太平洋标准时间(PST)

Pacific/Auckland

新西兰奥克兰

 默认的date打印的日期格式并不是很友好,看起来不太符合阅读模式。这时就可以用Java包中的SimpleDateFormat类了。

SimpleDateFormat

来对date进行格式化输出,变成我们想要的格式。

SimpleDateFormat中可以使用parse和format两个方法来进行格式化,format输出的是一个字符串类型,parse输出的是一个date类型。


Date date = new Date();//创建date对象
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy年MM月dd日 EEEE HH:mm");//格式化成这种形式
String format = dateFormat.format(date);//将dateFormat对象转化为字符串
try {
    Date parse = dateFormat.parse(format);//字符串转化成date对象
} catch (ParseException e) {
    throw new RuntimeException(e);
}

以下是常用的格式化日期和时间的字母及其含义

模式字母

含义

示例

y

年份

2022

M

月份

1-12

d

日期

1-31

H

小时(24小时制)

0-23

h

小时(12小时制)

0-12

m

分钟

0-59

s

0-59

S

毫秒

0-999

E

星期几的缩写 

Mon 周一

EEEE

星期几的完整表示

Monday 星期一

g

公元

公元

z

时区缩写

GMT+8:00

Z

时区偏移量

+0800

a

上午/下午

AM/PM

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值