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

  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时计时法了。

  1. 获取当前的月份

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

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

  1. 获得当前周几

这个其实和上一个很类似,具体不多说了,大家查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);  
  }

}
  1. 当前日期加一天

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

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);  
  }

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

因为无论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

  1. 获取其他时区的时间

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

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));  
  }

}
  1. 字符串转日期

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

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文档,一定可以处理好工作中所有遇到的关于时间的处理问题