转载自https://www.cnblogs.com/lcngu/p/5154834.html
一、java.util.Date对象用来表示时间,基本方法如下:
Date mDate = new Date(); //获取现在时间
Date mDate = new Date(long); //参数是自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数
boolean before(Date when) //测试此日期是否在指定日期之前。
Object clone() //返回此对象的副本。
int compareTo(Date anotherDate) //比较两个日期的顺序。
boolean equals(Object obj) //比较两个日期的相等性。
long getTime() //返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
int hashCode() //返回此对象的哈希码值。
void setTime(long time) //设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
String toString() //把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中:
dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
dd 是一月中的某一天(01 至 31),显示为两位十进制数。
hh 是一天中的小时(00 至 23),显示为两位十进制数。
mm 是小时中的分钟(00 至 59),显示为两位十进制数。
ss 是分钟中的秒数(00 至 61),显示为两位十进制数。
zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法 parse 识别的时区缩写。如果不提供时区信息,则 zzz 为空,即根本不包括任何字符。
yyyy 是年份,显示为 4 位十进制数。
二、java.text.SimpleDateFormat可以将Date对象和String相互转换,常用方法如下:
1、将Date转为String
Date date = new Date(); DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss EE",Locale.getDefault());
String str = df.format(date);
2、将String转为Date
String str = "2016-01-24 02:51:07 星期日"; DateFormat df = new SimpleDateFormat("yyyy-MM-01 hh:mm:ss EE"); Date date = df.parse(str);
三、java.util.GregorianCalendar类(Calendar的直接子类)提供了世界上大多数国家使用的标准日历系统
需要注意:
常用方法如下:
1、Calendar now = new GregorianCalendar(2016, 01, 24, 15, 55, 44); //创建对象,年/月/日/时/分/秒
2、Calendar now = new GregorianCalendar(); now.setTime(new Date()); //通过Date对象来创建
3、now.get(Calendar.YEAR)); //获取年份
4、now.get(Calendar.MONTH)); //获取月份
5、now.get(Calendar.DAY_OF_MONTH)); //当月中的第几日
6、now.get(Calendar.HOUR)); //获取时
7、now.get(Calendar.MINUTE)); //获取分
8、now.get(Calendar.SECOND)); //获取秒
9、now.get(Calendar.AM_PM)); //是上午还是下午
10、now.get(Calendar.DAY_OF_WEEK)); //当周的第几天
运算的方法主要是add()函数,例如,往后推五年:
now.add(Calendar.YEAR, 5);
四、时间工具类,将上面常用的函数放入该类,使用时比较方便。
import android.text.TextUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * 时间工具类 * @author bluefisher * */ public class TimeUtils{ /** * 日期格式,yyyyMMdd: "yyyy-MM-dd" */ public static final String yyyy_MM_ddStr = "yyyy-MM-dd"; /** * 日期格式,yyyyMMddhhmmss: "yyyy-MM-dd kk:mm:ss" */ public static final String yyyyMMddhhmmssStr = "yyyy-MM-dd HH:mm:ss"; public TimeUtils() { } /** * 时间加减 */ public static Date getDateAfterOpTime(Date date,int field,int amount) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(field,amount); return cal.getTime(); } public static String dateToStr(Date date,String pattern){ SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.format(date); } public static Date strToDate(String dateStr,String pattern){ SimpleDateFormat sdf = new SimpleDateFormat(pattern); try { return sdf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } return null; } public static String transferLongToDate(Long millSec,String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); Date date = new Date(millSec.longValue()); return sdf.format(date); } public static String getWeekDay() { return null; } public static Date getDate(String dateString, String format) { if (!TextUtils.isEmpty(dateString)) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); try { return simpleDateFormat.parse(dateString); } catch (ParseException e) { e.printStackTrace(); } } return null; } public static String getDate(Date date, String format) { if (null != date) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); return simpleDateFormat.format(date); } return null; } /** * 获取指定时间的年份 * @param date * @return */ public static int getYear(Date date){ SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = sd.format(date); return Integer.parseInt(dateStr.substring(0, 4)); } /** * 获取制定时间的月份 * @param date * @return */ public static int getMonth(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.MONTH) + 1; } /** * 获取制定时间的日 * @param date * @return */ public static int getDay(Date date){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.DAY_OF_MONTH); } public static String getWeek(Date date){ String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int w = calendar.get(Calendar.DAY_OF_WEEK) - 1; if (w < 0) w = 0; return weekDays[w]; } //2015年7月5日 星期三 public static String getStrDateAndWeed(Date date){ String str = getYear(date) + "年" + getMonth(date) + "月" + getDay(date) + "日" + " " + getWeek(date); return str; } /** * 计算两个日期相差的天数 * @param data1 * @param data2 * @return */ public static Integer days(String data1, String data2){ SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); Long c = null; try { c = sf.parse(data2).getTime()-sf.parse(data1).getTime(); } catch (ParseException e) { e.printStackTrace(); } long d = c/1000/60/60/24;//天 int days = (int)d; return days; } /** * 日期增长 * @param time * @param dayCount 增长天数 * @return */ public static String time(String time, int dayCount){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String str=""; try { Date date = sdf.parse(time); Calendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.add(calendar.DATE, dayCount);// //把日期往后增加一天.整数往后推,负数往前移动 date = calendar.getTime(); // 这个时间就是日期往后推一天的结果 str= sdf.format(date); } catch (ParseException e) { e.printStackTrace(); } return str; } }