您的位置:首页 > 编程语言 > Java开发

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

2017-02-19 07:09 246 查看
从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的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Date Format Calendar