--
文章内容总结了包括JS、JAVA、MYSQL从前端到数据库的所有日期相关常用操作,包括日期格式化和日期计算以及比较的所有的使用案例,从多方面总结和概括了对Date类型数据的处理方式,已达到快速上手和使用的目的,下面内容将分为部分进行:
--
JS时间日期操作
日期获取
01-创建日期
var myDate = new Date();//获取系统当前时间
var d2=new Date(1320336000000);//这个参数就是时间戳,被视为毫秒
var d3=new Date("2013-8-20 18:20:30");//字符串,并能够使用Date.parse()转换
var d4=new Date(2013,7,26);//参数含义参照d5参数描述
var d5=new Date(year, month, day, hours, minutes, seconds, microseconds)
02-获取指定日期数据
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开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime=myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间
03-获取时间戳
var myDate = new Date("2013-8-20 18:20:30").getTime();//获取系统当前时间
var myDate = new Date().getTime();//获取系统当前时间
var myDate = new Date("2013/5/12 20:10:20").getTime();//获取系统当前时间
--“/”和“-”的区别在于时区的问题,使用“/”所获取的时间戳更为准确
Date.parse("2013/5/12 20:10:20");//用于分析一个包含日期的字符串,返回一个时间戳
日期转字符串
var testDate = new Date();
var dateobj_toString = testDate.toString();//toString() 把Date对象转换为字符串。
var dataobj_toTimeString = testDate.toTimeString();//toTimeString()把Date对象的时间部分转换为字符串。
var dateobj_toDateString = testDate.toDateString();//toDateString()把Date对象的日期部分转换为字符串。
var dateobj_toUTCString = testDate.toUTCString();//toUTCString()根据世界时,Date对象转换为字符串。
var dateobj_toLocalString = testDate.toLocaleString();//toLocaleString()根据本地时间格式,把Date对象转换为字符串。
var dateobj_toLocalTimeString = testDate.toLocaleTimeString(); // toLocaleTimeString()根据本地时间格式,把Date对象的时间部分转换为字符串。
var dateobj_toLocaleDateString = testDate.toLocaleDateString();//toLocaleDateString()根据本地时间格式,把Date对象的日期部分转换为字符串。
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 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
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") //输出结果: 2017-01-23 09:36:10
(new Date()).Format("yyyy-MM-dd") //输出结果: 2017-01-23
JAVA时间日期操作
日期获取
01-获取时间
Date myDate = new Date();//获取系统当前时间
Date myDate = new Date(long Date)://根据给定的毫秒值创建日期对象
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(参数):获取年月日参数
Calendar now = Calendar.getInstance();
now.set(参数)//参数为指定日期或者年月日时分秒;
Calendar.DAY_OF_MONTH:日期,和 Calendar.DATE 相同
Calendar.HOUR:12 小时制的小时数
Calendar.HOUR_OF_DAY:24小时制的小时数
Calendar.MINUTE:分钟
Calendar.SECOND:秒
Calendar.DAY_OF_WEEK:周几
******获取指定时间(calender时间)数据:******
int year = now.get(Calendar.YEAR); //2018,当前年份
int month = now.get(Calendar.MONTH) + 1; //12,当前月,注意加 1
int day = now.get(Calendar.DATE); //23,当前日
******设定指定日期时间(calender时间)数据案例:******
now.set(Calendar.YEAR, 2016); //设置单个字段
now.set(2016, 1, 1[, 11, 1, 1]);//设定年月日或者年月日时分或年月日时分秒
now.set(int year, int month, int date[, int hourOfDay, int minute, int second])
now.set(date); //直接传入一个 Date 类型的日期
日期格式化
try {
/** 日期转字符串 */
SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
String dateStringParse = sfd.format(date);
/** 字符串转日期 */
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); //现在时间的1年后
now.add(Calendar.YEAR, -1); //现在时间的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():获取数据库当前时间,例如2008-08-08 22:28:21;
current_timestamp():获取当前时间戳,例如2008-08-09 23:22:24;
timestamp(date):日期转时间戳,例如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):日期转换为天,to_days('2008-08-08'); -- 733627
time_to_sec(time):时间转换为秒,time_to_sec('01:00:05'); -- 3605
sec_to_time(seconds):秒转换为时间,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,返回天数。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'); --
比较时间大小:常规的>、<、=、<>(不等于)、>=、<=等等!
例如:select * from tbl_xxx where '2018-01-01 01:01:01' <= '2018-02-02 02:02:02'