--
文章內(nèi)容總結(jié)了包括JS、JAVA、MYSQL從前端到數(shù)據(jù)庫的所有日期相關(guān)常用操作,包括日期格式化和日期計算以及比較的所有的使用案例,從多方面總結(jié)和概括了對Date類型數(shù)據(jù)的處理方式,已達到快速上手和使用的目的,下面內(nèi)容將分為部分進行:
--
JS時間日期操作
日期獲取
01-創(chuàng)建日期
var myDate = new Date();//獲取系統(tǒng)當前時間
var d2=new Date(1320336000000);//這個參數(shù)就是時間戳,被視為毫秒
var d3=new Date("2013-8-20 18:20:30");//字符串,并能夠使用Date.parse()轉(zhuǎn)換
var d4=new Date(2013,7,26);//參數(shù)含義參照d5參數(shù)描述
var d5=new Date(year, month, day, hours, minutes, seconds, microseconds)
02-獲取指定日期數(shù)據(jù)
var myDate = new Date();
myDate.getYear(); //獲取當前年份(2位)
myDate.getFullYear(); //獲取完整的年份(4位,1970-????)
myDate.getMonth(); //獲取當前月份(0-11,0代表1月)
myDate.getDate(); //獲取當前日(1-31)
myDate.getDay(); //獲取當前星期X(0-6,0代表星期天)
myDate.getTime(); //獲取當前時間(從1970.1.1開始的毫秒數(shù))
myDate.getHours(); //獲取當前小時數(shù)(0-23)
myDate.getMinutes(); //獲取當前分鐘數(shù)(0-59)
myDate.getSeconds(); //獲取當前秒數(shù)(0-59)
myDate.getMilliseconds(); //獲取當前毫秒數(shù)(0-999)
myDate.toLocaleDateString(); //獲取當前日期
var mytime=myDate.toLocaleTimeString(); //獲取當前時間
myDate.toLocaleString( ); //獲取日期與時間
03-獲取時間戳
var myDate = new Date("2013-8-20 18:20:30").getTime();//獲取系統(tǒng)當前時間
var myDate = new Date().getTime();//獲取系統(tǒng)當前時間
var myDate = new Date("2013/5/12 20:10:20").getTime();//獲取系統(tǒng)當前時間
--“/”和“-”的區(qū)別在于時區(qū)的問題,使用“/”所獲取的時間戳更為準確
Date.parse("2013/5/12 20:10:20");//用于分析一個包含日期的字符串,返回一個時間戳
日期轉(zhuǎn)字符串
var testDate = new Date();
var dateobj_toString = testDate.toString();//toString() 把Date對象轉(zhuǎn)換為字符串。
var dataobj_toTimeString = testDate.toTimeString();//toTimeString()把Date對象的時間部分轉(zhuǎn)換為字符串。
var dateobj_toDateString = testDate.toDateString();//toDateString()把Date對象的日期部分轉(zhuǎn)換為字符串。
var dateobj_toUTCString = testDate.toUTCString();//toUTCString()根據(jù)世界時,Date對象轉(zhuǎn)換為字符串。
var dateobj_toLocalString = testDate.toLocaleString();//toLocaleString()根據(jù)本地時間格式,把Date對象轉(zhuǎn)換為字符串。
var dateobj_toLocalTimeString = testDate.toLocaleTimeString(); // toLocaleTimeString()根據(jù)本地時間格式,把Date對象的時間部分轉(zhuǎn)換為字符串。
var dateobj_toLocaleDateString = testDate.toLocaleDateString();//toLocaleDateString()根據(jù)本地時間格式,把Date對象的日期部分轉(zhuǎn)換為字符串。
dateobj_toString====Wed Apr 05 2017 12:27:24 GMT+0800(中國標準時間)
dateobj_toTimeString====12:27:24 GMT+0800(中國標準時間)
dateobj_toDateString====Wed Apr 05 2017
dateobj_toUTCString====Wed,05 Apr 2017 04:27:24 GMT
dateobj_toLocalString====2017/4/5 下午12:27:24
dateobj_toLocalTimeString====下午12:27:24
dateobj_toLocalDateString====2017/4/5
日期格式化
// 對Date的擴展,將 Date 轉(zhuǎn)化為指定格式的String
// 月(M)、日(d)、小時(h)、分(m)、秒(s)、季度(q) 可以用 1-2 個占位符,
// 年(y)可以用 1-4 個占位符,毫秒(S)只能用 1 個占位符(是 1-3 位的數(shù)字)
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小時
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
使用案例:
(new Date()).Format("yyyy-MM-dd hh:mm:ss") //輸出結(jié)果: 2017-01-23 09:36:10
(new Date()).Format("yyyy-MM-dd") //輸出結(jié)果: 2017-01-23
JAVA時間日期操作
日期獲取
01-獲取時間
Date myDate = new Date();//獲取系統(tǒng)當前時間
Date myDate = new Date(long Date)://根據(jù)給定的毫秒值創(chuàng)建日期對象
Date myDate = new Date(int year,int month,int date,int hour,int min,int sec) //默認當前日期時間
Calendar now = Calendar.getInstance();//默認當前日歷時間
now.set(date);//修改日歷時間,傳入一個date類型即可
02-獲取時間戳
long timestap=new Date().getTime();//日期類型獲取時間戳
long timestap=Calendar.getInstance().getTime().getTime();//日期類型獲取時間戳
03-Calendar之now.get(參數(shù)):獲取年月日參數(shù)
Calendar now = Calendar.getInstance();
now.set(參數(shù))//參數(shù)為指定日期或者年月日時分秒;
Calendar.DAY_OF_MONTH:日期,和 Calendar.DATE 相同
Calendar.HOUR:12 小時制的小時數(shù)
Calendar.HOUR_OF_DAY:24小時制的小時數(shù)
Calendar.MINUTE:分鐘
Calendar.SECOND:秒
Calendar.DAY_OF_WEEK:周幾
******獲取指定時間(calender時間)數(shù)據(jù):******
int year = now.get(Calendar.YEAR); //2018,當前年份
int month = now.get(Calendar.MONTH) + 1; //12,當前月,注意加 1
int day = now.get(Calendar.DATE); //23,當前日
******設(shè)定指定日期時間(calender時間)數(shù)據(jù)案例:******
now.set(Calendar.YEAR, 2016); //設(shè)置單個字段
now.set(2016, 1, 1[, 11, 1, 1]);//設(shè)定年月日或者年月日時分或年月日時分秒
now.set(int year, int month, int date[, int hourOfDay, int minute, int second])
now.set(date); //直接傳入一個 Date 類型的日期
日期格式化
try {
/** 日期轉(zhuǎn)字符串 */
SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
String dateStringParse = sfd.format(date);
/** 字符串轉(zhuǎn)日期 */
String dateString = "2016-01-01 11:11:11";
Date dateparse = sfd.parse(dateString);
} catch (ParseException e) {
e.printStackTrace();
}
日期比較
01-日期加減
Calendar now = Calendar.getInstance();//獲取當前時間
now.add(Calendar.YEAR, 1); //現(xiàn)在時間的1年后
now.add(Calendar.YEAR, -1); //現(xiàn)在時間的1年前
02-日期比較大小
Date date1 = new Date();//獲取時間date1
Date date2 = new Date();//獲取時間date2
date1.before(date2);//true,當date1小于date2時,為true,否則為false
date2.after(date1);//true,當 date_02 大于 date_01 時,為 true,否則為 false
03-date1.compareTo(date2);
(1) 當 date1 小于 date2 時,為 -1;
(2) 當 date2 大于 date1 時,為 1;
(3) 當兩個日期相等時,為 0;
MySQL時間日期操作
獲取日期和時間戳
now():獲取數(shù)據(jù)庫當前時間,例如2008-08-08 22:28:21;
current_timestamp():獲取當前時間戳,例如2008-08-09 23:22:24;
timestamp(date):日期轉(zhuǎn)時間戳,例如timestamp('2008-08-08')-- 2008-08-08 00:00:00;
timestamp(dt,time):timestamp('2008-08-08 08:00:00', '01:01:01') -- 2008-08-08 09:01:01;
makdedate(year,dayofyear):日期拼湊,makedate(2001,31); -- '2001-01-31';makedate(2001,32); -- '2001-02-01';
maketime(hour,minute,second):時間拼湊,maketime(12,15,30); -- '12:15:30'
日期格式化
date_format(date,format):date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s')--20080808222301
str_to_date(str, format):str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09
str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30
to_days(date):日期轉(zhuǎn)換為天,to_days('2008-08-08'); -- 733627
time_to_sec(time):時間轉(zhuǎn)換為秒,time_to_sec('01:00:05'); -- 3605
sec_to_time(seconds):秒轉(zhuǎn)換為時間,sec_to_time(3605); -- '01:00:05'
時間計算
set @dt = now();
select date_add(@dt, interval 1 day); -- add 1 day
select date_add(@dt, interval 1 hour); -- add 1 hour
select date_add(@dt, interval 1 minute); -- ...
select date_add(@dt, interval 1 second);
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week);
select date_add(@dt, interval 1 month);
select date_add(@dt, interval 1 quarter);
select date_add(@dt, interval 1 year);
時間加減
datediff(date1,date2):兩個日期相減 date1 - date2,返回天數(shù)。datediff('2008-08-08', '2008-08-01'); -- 7
timediff(time1,time2):兩個日期相減 time1 - time2,返回 time 差值。timediff('2008-08-09 08:08:08', '2008-08-08 00:00:00'); --
比較時間大?。撼R?guī)的>、<、=、<>(不等于)、>=、<=等等!
例如:select * from tbl_xxx where '2018-01-01 01:01:01' <= '2018-02-02 02:02:02'