我下载了一个视频作者的视频合集,里面有 200 多个文件,包含从 2021 年到现在 3 年间的文件。我想按时间排序,但是遇到了问题:这些文件的修改日期都是同一天。我猜这是因为发布资源的人在整理或打包时,丢失了原始文件的日期信息。
使用“创建媒体日期”对视频文件排序
计算第二天的日期的要点在于,在跨月时进入下一月,在跨年时进入下一年。其他时间只要天数加1就行。所以找出每个月的最后一天就ok了。
function tomorrow_date (y,m,d){ //参数里的月份需要是自然月。也就是说月份+1这步在传参前就设置好 var run = false; //判断是否是闰年 if (!(y%4)) { //如果年份是4的整数倍 if (!(y%100)) { //如果是整百年 if (!(y%400)) { //如果是400的整数 run = true; } }else{ run = true; } } if(d==28&&m==2){ //2月28日 if(!run) { //非闰年 d=1; m++; }else{ //闰年 d++; } }else if(d==29&&m==2){ //2月29日 d=1; m++; }else if(d==30&&(m==4||m==6||m==9||m==11)){ //30天的月份里的第30天 d=1; m++; }else if(d==31){ //31天的月份里的第31天 d=1; if (m==12){ //如果是12月则进入下一年 m=1; y++; }else{ m++; } }else{ //如果今天不是月份的最后一天 d++; } return "明天是"+y+"年"+m+'月'+d+'日'; } var myDate = new Date(); var y = myDate.getFullYear(); var m = myDate.getMonth()+1; //因为js的月份是从0开始的,所以这里月份+1 var d = myDate.getDate(); document.write(tomorrow_date(y,m,d));
感谢TianMao指出闰年的问题~另外他提出了使用Date对象的setDate方法来计算下一天的办法。这个办法很简便,当我们重设了日期(第几天)后,JavaScript会自动更新Date对象的月份、年份,这样就我们就不用自己写上面的判断了。
var myDate = new Date(); myDate.setDate(myDate.getDate()+1); var y = myDate.getFullYear(); var m = myDate.getMonth()+1; var d = myDate.getDate(); console.log(y,m,d);
JavaScript计算明天的日期
假设现在获得了一些格式化的时间/日期字符串,如何用JavaScript对其排序呢?
理想的办法就是用Date.parse()方法将这些字符串解析为时间,直接比较它们的毫秒数。示例如下:
function sortDate(sortby) { return function(object1, object2) { var value1 = Date.parse(object1); var value2 = Date.parse(object2); if(value1>value2){ return (sortby==="desc")?-1:1; }else if(value1<value2){ return (sortby==="desc")?1:-1; } } } var a=["2017/4/20","2016/6/3","2016/7/1","2016/7/27","2017/8/4","2016/10/13","2016/12/27","2017/1/14","2017/2/3","2017/2/3","2017/2/3","2017/2/3","2017/2/3","2017/2/3","2017/2/3","2017/3/1","2017/3/1","2017/3/1","2017/3/1","2017/3/1","2017/3/1","2017/3/1","2017/3/23","2017/3/31","2017/5/19","2017/5/19","2017/6/2","2017/6/24","2017/6/24","2017/6/24","2017/9/1","2017/9/5","2017/12/12","2018/2/19","2018/9/26","2017/5/19","2017/3/9","2017/7/14","2017/5/19","2017/5/19"]; a.sort(sortDate("desc"));
结果如下:
上例定义了一个sortDate函数,我们在数组的sort方法里将它作为参数。如果不手动设置排序参数为desc,那么这个函数将始终按升序排序。
标准的时间/日期格式如下:
"2017/4/20 16:20:30"
当然,只用一部分,或者改变下连接符,也是可以解析的。
Read More →
JavaScript对日期排序
最近发现的,如果把表单input控件的type设置为date,chrome就会自动应用选择日期功能了。
<input type="date" name="">
首先输入框上会显示“年/月/日”的字样。
你可以点击这三项中的任意一个输入数字。
鼠标放上input之后,最右侧会显示一些操作按钮。点击最右侧的三角形,就会打开一个日期选择面板:
点击即可把选择的日期输进去。
这样在chrome上大部分时候都可以对各种日期输入插件说拜拜啦~来,跟我念:
谷人希谷人希谷人希谷人希谷人希谷人希谷人希谷人希谷人希谷人希谷人希谷人希……
试一试:
chrome对日期表单的支持
有些网站上输入日期的输入框是点击后会弹出日历界面,今天要用这个效果,找到了My97 DatePicke。这个控件不依赖jq,也不会与jq产生冲突。效果如下: