JS根据本月求上月与上两月,且带前导零

原创 2015年11月21日 18:02:34

        在PHP,求这个月,上个月,上两月是很简单的,有现成的方法给你。$data['month']=array(date('Y-m'),date('Y-m', strtotime('-1 month')),date('Y-m', strtotime('-2 month')));         现在需要在JS上做。请求只返回了本月,根据本月求上月和上两月。逻辑是很简单,无非就是月份小于十,加个前导零;月份小于1,就变成12月,年份再减一。但我写出来的代码就是很丑……我要勇敢地记下我写的丑样代码:

success: function (response) {
                    if (response.errcode == 0) {
                        var intYear = parseInt(response.data['year']);
                        var intMonth = parseInt(response.data['month']);
                        var thisMonth = "";
                        var lastMonth = "";
                        var lastTwoMonths = "";

                        if (2 < intMonth < 9) {
                            thisMonth = intYear + "-" + "0" + intMonth;
                            lastMonth = intYear + "-" + "0" + (intMonth - 1);
                            lastTwoMonths = intYear + "-" + "0" + (intMonth - 2);
                        }

                        switch (intMonth) {
                            case 1:
                                thisMonth = intYear + "-" + "01";
                                lastMonth = (intYear - 1) + "-" + "12";
                                lastTwoMonths = (intYear - 1) + "-" + "11";
                                break;
                            case 2:
                                thisMonth = intYear + "-" + "02";
                                lastMonth = intYear + "-" + "01";
                                lastTwoMonths = (intYear - 1) + "-" + "12";
                                break;
                            case 9:
                                thisMonth = intYear + "-" + "09";
                                lastMonth = intYear + "-" + "08";
                                lastTwoMonths = intYear + "-" + "07";
                                break;
                            case 10:
                                thisMonth = intYear + "-" + intMonth;
                                lastMonth = intYear + "-" + "09";
                                lastTwoMonths = intYear + "-" + "08";
                                break;
                            case 11:
                                thisMonth = intYear + "-" + intMonth;
                                lastMonth = intYear + "-" + "10";
                                lastTwoMonths = intYear + "-" + "09";
                                break;

                        }
         我是真的想了很久,但是写出来真的觉得很丑,于是拿给老大叫他帮改一下,结果瞬间高富帅了。

success: function (response) {
                    if (response.errcode == 0) {
                        var tempYear = parseInt(response.data['year']);
                        var tempMonth = parseInt(response.data['month']);
                        var thisMonth = tempYear + "-" + (tempMonth >= 10 ? tempMonth : "0" + tempMonth);
                        if (tempMonth == 1) {
                            tempYear--;
                            tempMonth = 12;
                        } else {
                            tempMonth--;
                        }
                        var lastMonth = tempYear + "-" + (tempMonth >= 10 ? tempMonth : "0" + tempMonth);
                        if (tempMonth == 1) {
                            tempYear--;
                            tempMonth = 12;
                        } else {
                            tempMonth--;
                        }
                        var lastTwoMonths = tempYear + "-" + (tempMonth >= 10 ? tempMonth : "0" + tempMonth);

                        $("#this-month-td").text(thisMonth);
                        $("#last-month-td").text(lastMonth);
                        $("#last-two-months-td").text(lastTwoMonths);

         这个经历很感叹,要实现功能很简单,但你是开着宝马到终点的还是骑着单车到终点的就是重大区别。而且这个宝马还可以拓展(就是如果你想得到上几个月,还可以用循环弄出来),那是更大的区别了。我反思过,我写不出这样的代码,是对变量的运用不熟悉。我是知道变量是怎样用的,但没这样用过一时很难想到。高手总是说写出优雅的代码,我终于有点明白优雅这个词为什么能放到代码上了。一个方法,命名清晰,效率够高,可拓展性好,重用性高,那就是大大的优雅。而我写的东西,需求一变化,改起来又麻烦,就是拓展性差,维护起来困难,又不能拿到其他地方去用,只能针对这个功能用,就是重用性很低。

         关于写出优雅代码,上网看到大家评价不错的好书,准备有时间要搞回来膜拜:

    1.编写可读代码的艺术
    2.代码整洁之道
    3.程序员修炼之道

        

版权声明:本文为博主原创文章,未经博主允许不得转载。

在js中做数字字符串补0

通常遇到的一个问题是日期的“1976-02-03 HH:mm:ss”这种格式 ,我的比较简单的处理方法是这样: function formatDate(d) { var D=['00','0...
  • aimingoo
  • aimingoo
  • 2009年08月28日 11:28
  • 55490

JS获取本周周一 周日日期、本季度、本月、上月的开端日期、停止日期

1、首先来一个自己公司项目的源码:http://blog.csdn.net/kongjiea/article/details/46829023 项目需求描述: 从20150712日开始, , ...

JS获取本周、本季度、本月、上月的开端日期、停止日期

var getdate=function(){ var now = new Date(); //当前日期 var nowDayOfWeek = now.getDay(); //今天本周...

这电商代运营公司两月打造一个带泪的超级单品

在经济环境整体不景气,传统企业和传统电商企业一筹莫展之时,那些行业的精英企业若能将自己的宝贵经验分享出来,无疑是行善积德之举。   作为业内知名的电商代运营企业,杭州壤歌电商在数年的...

js获取本月的第一个星期一

  • 2012年04月18日 17:43
  • 869B
  • 下载

JS 获取 今天 本周 本月 最近三十天

var now = new Date(); var year = now.getFullYear(); //getFullYear getYear var month = now.getMonth()...

js获得本周,本月,本季度的开始日期和结束日期

var now = new Date(); //当前日期 var nowDayOfWeek = now.getDay(); ...

js倒计时代码 适合于本月促销-倒计时代码

无标题文档 00天 00时 00分 00秒 $(function(){ //new countDownTimer('.clockContainer'); $(".cloc...

js获取 本周,本月,本季度,本年,上月,上周,上季度,去年

转载必须在文章第一行注明来源地址:  http://blog.csdn.net/yhc13429826359/article/details/8085641 /** * 针对...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JS根据本月求上月与上两月,且带前导零
举报原因:
原因补充:

(最多只允许输入30个字)