首页 > Java > Java中常见的日期处理方法

Java中常见的日期处理方法

在实际工作中日期是我们非常用的一种类型,其原因相信不用我说了大家都明白,今天就写一篇文章记录一下自己在工作中常用的日期处理

1. 日期格式化

日期格式化,在工作中,很多时候我们拿到的日期的格式不是我们想要的,那么就需要我们把它格式化成我们想要的,那么怎么做呢?
举个例子:我们想格式化当日时间为:2015-05-31 22:05:30,就可以这么做:


package cn.bridgeli.demo.date;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest {

    public void testSimpleDateFormat() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        String now = simpleDateFormat.format(date);
        System.out.println(now);
    }

}

那么大家就可以根据自己的需要,去格式化大家想要的格式了,需要注意的一点是:我这里的“HH”是大写的表明是24时计时法,如果写成小写的“hh”,就变成12时计时法了。

2. 获取当前的月份

我想有些人可能已经想到了,把上面的改成


SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM");

这个是能达到目的,但不够优雅,也不是官方所推荐的,也比较难以维护,下面我们看看标准的实现


package cn.bridgeli.demo.date;

import java.util.Calendar;
import java.util.Date;

public class DateTest {

    public void testSimpleDateFormat() {
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.get(Calendar.MONTH));
    }

}

其实在JDK的早期版本中,Date类型是直接有genMonth()方法的,但由于Date类型比较简单,功能有限,所以后来JDK就把这个方法给废弃了(但为了兼容,目前还是可以用的),然后创造了Calendar,所以我们可以利用Calendar获取年份、月份、日期等等,具体可以查询JDK的API

3. 获得当前周几

这个其实和上一个很类似,具体不多说了,大家查JDK的API中的Calendar就可以看到了


package cn.bridgeli.demo.date;

import java.util.Calendar;
import java.util.Date;

public class DateTest {

    public static void main(String[] args) {
        Date today = new Date();
        Calendar c = Calendar.getInstance();
        c.setTime(today);
        int weekday = c.get(Calendar.DAY_OF_WEEK);
        System.out.println(weekday);
    }

}

4. 当前日期加一天

有时候我们,不仅需要当前时间,而且需要当前时间往前推或者往后推,这个时候我们就可以这么做:


package cn.bridgeli.demo.date;

import java.util.Calendar;
import java.util.Date;

public class DateTest {

    public static void main(String[] args) {
        Date date = new Date();
		Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.DATE, 1);// 把日期往后增加一天.整数往后推,负数往前移动
        date = calendar.getTime(); // 这个时间就是日期往后推一天的结果
        System.out.println(date);
    }

}

5. 读取配置文件中的某一时间

因为无论new Date()还是Calendar.getInstance()获取的都是系统当前时间,但有时候我们从配置文件或者数据库中读取到了时间,我们怎么把它放到一个对象中呢,那么我们可以这么做:


package cn.bridgeli.demo.date;

import java.util.Calendar;
import java.util.Date;

public class DateTest {

    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        Date date = XXX;
        calendar.setTime(date);
    }

}

注意例子因为是随便写的,所以就写了一个XXX

6. 获取其他时区的时间

例如获取日本时区的时间,可以这么做:


package cn.bridgeli.demo.date;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;

public class DateTest {

    public static void main(String[] args) {
        Calendar cJapen = new GregorianCalendar(TimeZone.getTimeZone("Japan"));
        System.out.println(cJapen.get(Calendar.HOUR_OF_DAY));
    }

}

7. 字符串转日期

有时候我们获取到的是一个字符串,需要转成时间,那么我们可以这么处理


package cn.bridgeli.demo.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest {

    public static void main(String[] args) {
        String str = "2015-05-31 23:03:30";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            Date date = sdf.parse(str);
            System.out.println(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

}

这些都是一些常见的关于日期的处理,相信大家看完这篇文章,再加上JDK的API文档,一定可以处理好工作中所有遇到的关于时间的处理问题

分享到:
作 者: BridgeLi,http://www.bridgeli.cn/
原文链接:https://www.bridgeli.cn/archives/181
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
分类: Java 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.