Java中Date类和Calendar类

来源:互联网 发布:和其正 知乎 编辑:程序博客网 时间:2024/05/17 04:57

前言

写后台程序的时候,经常需要存储当前服务器的时间戳,使用时间戳也很方便,客户端和服务器端都可以根据自己的需求做各自的转换

在php里,获取当前时间戳使用time()函数,格式化输出通过Date()函数即可,Java里相对复杂一些,这里简单介绍一下

Java语言中的Calendar,Date,DateFormat组成了Java标准的一个基本但是非常重要的部分。日期是商业逻辑计算一个关键的部分,所有的开发者都应该能计算未来的日期,定制日期的显示格式,并将文本数据解析成日期对象


获取UNIX时间戳

在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期的处理。这里简单介绍一下用Date类如何获取当前时间戳

使用系统的当前日期和时间创建一个日期对象并返回一个长整数,这个时间通常称为Java 虚拟机(JVM)主机环境的系统时间,单位是毫秒,因此需要除以1000转换成UNIX时间戳

import java.util.Date;public class TimeTest {    public static void main(String args[]) {        Date time = new Date();        System.out.println(time.getTime() / 1000); // 1387258105        System.out.println(time.toString()); // Tue Dec 17 13:28:25 CST 2013    }}


格式化日期

php里可以使用Date()函数定制日期数据的格式用于呈现,Java里需要调用SimpleDateFormat类,例如将当前时间格式化输出:

import java.text.SimpleDateFormat;import java.util.Date;public class TimeTest {    public static void main(String args[]) {        Date time = new Date();        System.out.println(time.getTime() / 1000); // 1387260201        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss"); // 2013-03-17 14:03:21        String str = sdf.format(time);        System.out.println(str);    }}


将文本解析成日期对象

给定了格式化的时间字符串,例如“2013-12-17 14:05:59”,需要将其转换成Date对象,便于获取时间戳获取进行其它格式化操作,可以继续调用SimpleDateFormat类

import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class TimeTest {    public static void main(String args[]) {        String text = "2013-12-17 14:05:59";        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");                try {            Date time = sdf.parse(text);            System.out.println(time.getTime() / 1000);        } catch(ParseException e) {            System.out.println(e.getMessage());        }    }}


获取日期的特定部分

通过Date和SimpleDateFormat两个类,我们已经可以实现获取当前时间戳,日期格式化输出,格式化日期字符串转Date对象功能,现在还有一个新的需求,如何获取日期的特定部分,例如当前的小时,当前的天数等,这就需要用到Calendar类了

import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;public class TimeTest {    public static void main(String args[]) {        Date date = new Date();        GregorianCalendar gcalendar = new GregorianCalendar();        gcalendar.setTime(date);        int year = gcalendar.get(Calendar.YEAR);        int month = gcalendar.get(Calendar.MONTH);        int day = gcalendar.get(Calendar.DAY_OF_MONTH);        int hour = gcalendar.get(Calendar.HOUR_OF_DAY);        int minute = gcalendar.get(Calendar.MINUTE);        int second = gcalendar.get(Calendar.MINUTE);        System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":"                + second);    }}


参考资料

1、http://www.51cto.com/specbook/24/6720.htm
1 0
原创粉丝点击