显示时间格式

摘要:
显示特定时间所需的格式如下:12:34昨天12:34前天20:10本周一21:15上周二10:21 3月21日21:14 2010年10月21日19:32输出可通过JS:˂!

要求显示某个时间的格式如下:

12:34
昨天 12:34
前天 20:10
本周一 21:15
上周二 10:21
3月21日 21:14
2010年10月21日 19:32

通过JS输出可编码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>TimeTest4</title>
    <!--<script src="http://www.cnblogs.com/js/jquery-1.6.1-vsdoc.js" type="text/javascript"></script>-->
    <script src="http://www.cnblogs.com/js/jquery-1.6.1.js" type="text/javascript"></script>
    <script type="text/javascript">
        /*------------------------------------*\
        CJB: Extentions
        \*------------------------------------*/
        Date.prototype.format = function (format) {
            /*
            * eg:format="YYYY-MM-dd hh:mm:ss";
            */
            var o = {
                "M+": this.getMonth() + 1,  //month
                "d+": this.getDate(),       //day
                "h+": this.getHours(),    //hour
                "m+": this.getMinutes(),  //minute
                "s+": this.getSeconds(), //second
                "q+": Math.floor((this.getMonth() + 3) / 3),  //quarter
                "S": this.getMilliseconds() //millisecond
            }

            if (/(y+)/.test(format)) {
                format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
            }

            for (var k in o) {
                if (new RegExp("(" + k + ")").test(format)) {
                    format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
                }
            }
            return format;
        };
    </script>
    <script type="text/javascript">
        /*------------------------------------*\
        CJB: Timeline
        \*------------------------------------*/
        $(function () {
            for (var i = 0; i < 30; i++) {
                var mil = new Date().getTime() - 86400000 * i;
                $('<p />').html(txtOfTimeline(mil)).appendTo($('#msgbox'));
            }
        });

        function txtOfTimeline(millisecond) {
            var now = new Date();
            var dt = new Date(millisecond);

            //本周第一天
            var WeekFirstDay = new Date(startDay(new Date(now - (now.getDay() - 1) * 86400000)));
            debug("本周第一天: " + WeekFirstDay.format('yyyy-MM-dd hh:mm:ss S'));
            //上周第一天
            var PreviousFirstWeekDay = new Date(startDay(new Date(WeekFirstDay - 86400000 * 7)));
            debug("上周第一天: " + PreviousFirstWeekDay.format('yyyy-MM-dd hh:mm:ss S'));
            //本月第一天
            var MonthFirstDay = new Date(startDay(new Date(now.getFullYear(), now.getMonth(), 1)));
            debug("本月第一天: " + MonthFirstDay.format('yyyy-MM-dd hh:mm:ss S'));
            //今天
            var Today = new Date(startDay(now));
            debug("今天: " + Today.format('yyyy-MM-dd hh:mm:ss S'));
            //昨天
            var Yesterday = new Date(startDay(new Date(now - 86400000)));
            debug("昨天: " + Yesterday.format('yyyy-MM-dd hh:mm:ss S'));
            //前天
            var Beforeyesterday = new Date(startDay(new Date(now - 86400000 * 2)));
            debug("昨天: " + Beforeyesterday.format('yyyy-MM-dd hh:mm:ss S'));

            //日期判断
            if (dt > Today) {
                //12:34
                return dt.format('hh:mm');
            } else if (dt > Yesterday) {
                return dt.format('昨天 hh:mm');
            } else if (dt > Beforeyesterday) {
                return dt.format('前天 hh:mm');
            } else if (dt > WeekFirstDay) {
                switch (dt.getDay()) {
                    case 1:
                        return dt.format('本周一 hh:mm');
                        break;
                    case 2:
                        return dt.format('本周二 hh:mm');
                        break;
                    case 3:
                        return dt.format('本周三 hh:mm');
                        break;
                    case 4:
                        return dt.format('本周四 hh:mm');
                        break;
                    case 5:
                        return dt.format('本周五 hh:mm');
                        break;
                    case 6:
                        return dt.format('本周六 hh:mm');
                        break;
                    case 0:
                        return dt.format('本周日 hh:mm');
                        break;
                    default:
                        return dt.format('MM月dd日 hh:mm');
                        break;
                }
            } else if (dt > PreviousFirstWeekDay) {
                switch (dt.getDay()) {
                    case 1:
                        return dt.format('上周一 hh:mm');
                        break;
                    case 2:
                        return dt.format('上周二 hh:mm');
                        break;
                    case 3:
                        return dt.format('上周三 hh:mm');
                        break;
                    case 4:
                        return dt.format('上周四 hh:mm');
                        break;
                    case 5:
                        return dt.format('上周五 hh:mm');
                        break;
                    case 6:
                        return dt.format('上周六 hh:mm');
                        break;
                    case 0:
                        return dt.format('上周日 hh:mm');
                        break;
                    default:
                        return dt.format('MM月dd日 hh:mm');
                        break;
                }
            } else if (dt > MonthFirstDay) {
                return dt.format('MM月dd日 hh:mm');
            }

            return dt.format('yyyy年MM月dd日 hh:mm');

        }

        function startDay(startTime) {
            return Date.parse(startTime.getFullYear() + "-" + (startTime.getMonth() + 1) + "-" + startTime.getDate() + " 00:00:00");
        }

        function endDay(endTime) {
            return Date.parse(endTime.getFullYear() + "-" + (endTime.getMonth() + 1) + "-" + endTime.getDate() + " 23:59:59");
        }

        function debug(txt) {
            if (window.console && window.console.log)
                window.console.log('debug: ' + txt);
        }
    </script>

</head>
<body>
    <div id="msgbox">
    </div>
</body>
</html>

免责声明:文章转载自《显示时间格式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ObjectiveC分类js模拟签名下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

晒晒我们的开源项目 robbin的自言自语 ITeye技术网站

晒晒我们的开源项目 - robbin的自言自语 - ITeye技术网站 晒晒我们的开源项目 博客分类:Tech 我们的研发团队是一支mini型研发团队,目前共有研发人员13人。由于网站产品维护的历史原因,这13人的研发团队分为4支小组,分别是:Ruby研发小组5人;PHP研发小组4人;.net研发小组2人,Java搜索小组2人。 别看我们...

iOS(iPhone/iPad)开发新手必读 狼人:

Objective-C 入门 一个简单的可以快速上手的 Objective-C 入门教程。 iOS概述 本文对构成iOS的基础特性提供了高层的概述,帮助你了解这个平台。 基于Xcode4开发第一个iPhone程序:“Hello World” 由宝玉出品的非常详尽的iOS开发入门教程。 《C#妹妹和Objective-C阿姨对话录》系列 由小墨的童鞋创作的生动...

进程与信号(二)

进程调度 ps输出的一个特点就是ps命令实体本身:1357 pts/2 R 0:00 ps -ax这表明进程1357处于运行状态(R)并且正在执行命令ps -ax。所以进程是在其自身的输出中被描述的。状态指示器只是表明程序已经准备好运行,并不一定是在实际运行。在单处理器的计算机上,每次只能运行一个进程,而其他的进程必须依次等待。这些轮序,就是所谓的时间片,非...

规范化中的 JSR 299 与可能到来的 JSR 330

规范化中的 JSR 299 与可能到来的 JSR 330 转载请保留作者信息: 作者:88250 Blog:http:/blog.csdn.net/DL88250 MSN & Gmail & QQ:DL88250@gmail.com 目前,JSR 299(Contexts and Dependency Injection for J...

Ubuntu常用命令与技巧

Ubuntu常用命令与技巧 sudo apt-get install 软件名 安装软件命令 sudo nautilus 打开文件(有root权限) su root 切换到“root” ls 列出当前目录文件(不包括隐含文件) ls -a 列出当前目录文件(包括隐含文件) ls -l 列出当前目录下文件的详细信息 cd .. 回当前目录的上一级目录...

专家书单推荐:C++藏书阁(上)

专家书单推荐:C++藏书阁(上) , C++,图书,书架, , - CSDN 资讯 专家书单推荐:C++藏书阁(上)2006.08.29 刘基诚 刘江 共有评论(0)条发表评论收藏接下来,我们还是按照推荐Ja鄄va图书的老套路,将C++图书分为综合/巨著、入门、中级和专题四部分介绍。本月是前两部分。因为已有的相关推荐已经比较成熟,我们把重点放在近来出版的新书...