Java Notes: 关于时间、日期表达的类

本文介绍了Java中处理时间的各种方法,包括原始的时间戳表示、利用Date类进行日期操作、使用Calendar类进行更复杂的日期时间计算,以及如何通过SimpleDateFormat类定制日期时间的显示格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从Linux开始,计算机系统都习惯以距离1970年1月1日的秒数(Linux用)或者微秒数(Milleseconds,Java用)来表示当前时间。


所以,在Java当中最原始的时间表达方法是:利用long这种数据类型来存储。


获取当前时间:long now = System.currentTimeMillis();


当然,为了更好地打印大的数字,我们可以使用格式设置类:DecimalFormat. 


long now = System.currentTimeMillis();
java.text.DecimalFormat df;
df = new java.text.DecimalFormat("#,###");
//注意这里用逗号代表小数点
System.out.println(df.format(now));


有没有人类点的表示方式呢?有,先说一个deprecated 的类(最好别用的意思):


Java 还有一个类叫做:Date(). 


java.util.Date d = new java.util.Data();
System.out.println(d); 

但是最好使用一个新的Calendar 类,但是Calendar类也有坑:月是从0开始算起(1月是0,2月是1...)。天是从1开始算起(周日是1,周一是2,周二是3)。


而且Calendar是一个抽象类,是无法创建对象的。所以必须:Calendar.getInstance() 去创建其子类赋给引用。常用的:Calendar.JANUARY, Calendar.MONDAY都是它的常量。


Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);

上面的直接用println打印date对象其实是调用了toString() method. 那如果我想指定打印的格式呢?


java.text.SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy @ HH:mm");

System.out.println(sdf.format(d));

但是这里同样需要注意MM代表代表Month. 小写的mm是分钟。MMM用的是Feb, MM用的是02. 就这点不同。


然后,可以利用语言的代码来让系统自适应输出:


java.util.Locale = new Locale (languageCode);
DataFormat df = DateFormat.getDateTimeInstance(DataFormat.MEDIUM, DataFormat.MEDIUM, locale);

你可以设置到底是short, medium和long。Depend on your requirement. 


还可以使用languageCode和countryCode来指定Locale(en, GB). 


需要注意的是:和StringBuilder一样,Date和Calendar是可以利用setMethods去修改它的内容的。所以,他们都是mutable的。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值