文档章节

修改日期格式

万城
 万城
发布于 2017/09/25 17:51
字数 782
阅读 2
收藏 0
//思路:先判断一下然后把月份从数组里获取出来修改,日期判断一下余数加上就可以了,并不复杂只是比较繁琐,不知道从何下手可以先写写试试,方法慢慢往上加也没什么。方法还可以改进,有时间改进一下,转换的要求是:数组的第一个值是起始时间第二个是结束时间,如果起始或结束时间包含当年年份就不用加年份了只显示月份,如果起始时间和结束时间的年份月份都相同,则第二项值只显示日。就像平时说的三月五号到十五号这个意思。
function makeFriendlyDates_van(val) {
    //需要的变量
    var month = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], //月份数组
            dayarr = ['th', 'st', 'nd', 'rd', 'th', 'th', 'th', 'th', 'th', 'th', 'th'], //日期数组
    /*日应该加的末尾是最后二个字母
     *第1  first      st
     *第2  second  nd
     *第3  third   rd
     *第4  fourth  th
     *第5  fifth   th
     *第6  sixth   th
     *第7  seventh th
     *第8  eighth  th
     *第9  ninth   th
     *第10 tenth   th
     */
            val1 = val[0],
            val2 = val[1],
            date1 = new Date(val1).getTime(),
            date2 = new Date(val2).getTime(),
            dateres = new Date(date2 - date1),
            dates1 = val1.split("-"),
            dates2 = val2.split("-"),
            daten1 = [],
            daten2 = [],
            curyear = new Date().getFullYear(),
            ress1 = "",
            ress2 = "",
            result = [],
            oneyear = 31536000000,
            day1 = "",
            day2 = "";

    //转换成需要的格式

    function return_num1(val) {
        daten1.push(parseInt(val)); //用于forEach的方法不要加return,因为forEach会自己返回,而且forEach不会修改原数组
    }

    function return_num2(val) {
        daten2.push(parseInt(val));
    }
    dates1.forEach(return_num1); //把两个数组里的字符串转换成数字以便下面操作
    dates2.forEach(return_num2);

    //开始判断
    if (date2 - date1 <= 0) { //判断结束时间应大于起始时间
        return false;
    }
    return function() { //这里如果放参数的话就是从父级方法传进来的参数
        //数组的第一项值
        if (daten1[0] === curyear || date2 - date1 <= oneyear) { //daten1[0] === daten2[0] || date2 - date1 < oneyear//这条判断是不需要年份的
            if (daten1[1] === daten2[1]) { //这条判断是不需要年份也不需要月份的,这条判断其实不用加,因为就算相同月份数组的第一项值也要加月份,拼第二项值的时候判断就可以了,下次改进的时候删掉这条判断
                day1 = daten1[2] + dayarr[daten1[2] % 10];
                ress1 = month[daten1[1]] + " " + day1;
                day2 = daten2[2] + dayarr[daten1[2] % 10];
                ress2 = day2;
                result.push(ress1);
            } else {
                day1 = daten1[2] + dayarr[daten1[2] % 10];
                ress1 = month[daten1[1]] + " " + day1;
                result.push(ress1);
            }
        } else {
            day1 = daten1[2] + dayarr[daten1[2] % 10];
            ress1 = month[daten1[1]] + " " + day1 + "," + daten1[0];
            result.push(ress1);
        }
        //数组的第二项值
        if (daten2[0] === curyear || date2 - date1 <= oneyear) { //daten1[0] === daten2[0] || date2 - date1 < oneyear//这条判断是不需要年份的
            if (daten1[1] === daten2[1]) { //这条判断是不需要年份也不需要月份的,这条判断其实不用加,因为就算相同月份数组的第一项值也要加月份,拼第二项值的时候判断就可以了,下次改进的时候删掉这条判断
                day2 = daten2[2] + dayarr[daten2[2] % 10];
                ress2 = day2;
                result.push(ress2);
            } else {
                day2 = daten2[2] + dayarr[daten2[2] % 10];
                ress2 = month[daten2[1]] + " " + day2;
                result.push(ress2);
            }
        } else {
            day2 = daten2[2] + dayarr[daten2[2] % 10];
            ress2 = month[daten2[1]] + " " + day2 + "," + daten2[0];
            result.push(ress2);
        }
        clog(result);
        return result;
    };
}
makeFriendlyDates_van(["2017-01-02", "2017-01-05"])();

© 著作权归作者所有

上一篇: 限定构造函数
下一篇: 全排列算法
万城
粉丝 2
博文 50
码字总数 99199
作品 0
青岛
前端工程师
私信 提问

暂无文章

django2.2练习实现用户模拟登录

cat views.py from django.shortcuts import render,redirectfrom django.http import HttpResponsefrom . import modelsdef index(request):    if not request.session.get(......

平头哥-Enjoystudy
19分钟前
0
0
JVM对自身内存空间的划分

划分了五个区域 一:寄存器 虚拟机的pc寄存器是用于存放下一条将要执行的指令的地址(字节码流)。 二:本地方法栈 本地方法栈与Java栈的作用和原理非常相似。区别只不过是Java栈是为执行Java方法...

柒礼拜
28分钟前
0
0
大数据(Spark-S3-SparkSQL架构及原理)

Spark SQL的发展 HDFS -> HIVE 由于Hadoop在企业生产中的大量使用,HDFS上积累了大量数据,为了给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,Hive应运而生。Hive的原理是将...

这很耳东先生
32分钟前
0
0
solidity智能合约中tx.origin的正确使用场景

简介 tx.origin是Solidity的一个全局变量,它遍历整个调用栈并返回最初发送调用(或事务)的帐户的地址。在智能合约中使用此变量进行身份验证会使合约容易受到类似网络钓鱼的攻击。 但针对t...

程序新视界
41分钟前
0
0
代码详解:基于Python建立任意层数的深度神经网络

全文共6359字,预计学习时长20分钟或更长 图片来源:pexels.com/@divinetechygir 在这篇指南中,我们将建立起一个任意层数的深度神经网络。这个神经网络可以应用于二元分类的监督学习问题。 ...

读芯术
43分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部