本文主要是说一些java中关于日期的方法。
package com.wnb.java;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class Example {
public static void main(String[] args) {
String DateStr1 = "2011-10-1 10:20:16";
String DateStr2 = "2011-10-07 15:50:35";
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
//日期大小的比较
Date dateTime1 = dateFormat.parse(DateStr1);
Date dateTime2 = dateFormat.parse(DateStr2);
boolean i = dateTime1.compareTo(dateTime2) < 0;
System.out.println(i);
} catch (ParseException e) {
e.printStackTrace();
}
//取得某月的天数
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR,2016);
cal.set(Calendar.MONTH,10);//十一月
int maxDate = cal.getActualMaximum(Calendar.DATE);
System.out.println(maxDate);
//日期往前挪一天
Date date = new Date();//取时间
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
date = calendar.getTime(); //这个时间就是日期往后推一天的结果
System.out.println(dateFormat.format(date));
try{
//获取日期的年月日等
cal.setTime(dateFormat.parse(DateStr1));
int year = cal.get(Calendar.YEAR);//获取年份
int month=cal.get(Calendar.MONTH);//获取月份
int day=cal.get(Calendar.DATE);//获取日
int hour=cal.get(Calendar.HOUR);//小时
int minute=cal.get(Calendar.MINUTE);//分
int second=cal.get(Calendar.SECOND);//秒
int WeekOfYear = cal.get(Calendar.DAY_OF_WEEK);//一周的第几天
System.out.println("时间是:公元"+year+"年"+month+"月"+day+"日 "+hour+"时"+minute+"分"+second+"秒 星期"+WeekOfYear);
} catch (ParseException e) {
e.printStackTrace();
}
}
/**
* 函数功能描述:UTC时间转本地时间格式
* @param utcTime UTC时间
* @param utcTimePatten UTC时间格式
* @param localTimePatten 本地时间格式
* @return 本地时间格式的时间
* eg:utc2Local("2017-06-14 09:37:50.788", "yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd HH:mm:ss")
*/
public static String utc2Local(String utcTime, String utcTimePatten, String localTimePatten) {
SimpleDateFormat utcFormater = new SimpleDateFormat(utcTimePatten);
utcFormater.setTimeZone(TimeZone.getTimeZone("UTC"));//时区定义并进行时间获取
Date gpsUTCDate = null;
try {
gpsUTCDate = utcFormater.parse(utcTime);
} catch (ParseException e) {
e.printStackTrace();
return utcTime;
}
SimpleDateFormat localFormater = new SimpleDateFormat(localTimePatten);
localFormater.setTimeZone(TimeZone.getDefault());
String localTime = localFormater.format(gpsUTCDate.getTime());
return localTime;
}
/**
* 函数功能描述:时间格式前后移多少秒
* @param strDate 时间
* @param duration 秒数
* eg:test("2018-02-11 12:15:15", 100);
*/
public static void test(String strDate, int duration){
//生成一个为DateFormat对象,其格式与输入串格式对应
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
//将输入串转成Date对象。仔细研究下SimpleDateFormat,有没有不用去掉十分之一秒,
Date date = format.parse(strDate);
//转成Calendar对象,便于进行加减操作
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(date);
//这个方法很灵活,在哪个字段上操作,增减多少,都很方便
calendar.add(Calendar.SECOND, duration);
//用DateFormat对象将Calendar对象格式化
String outBefore = format.format(calendar.getTime());
System.out.println(outBefore);
} catch (ParseException e) {
e.printStackTrace();
}
}
}