• js 时间加减


    js 方面时间时区相关部分:

    时区的定义

    var tz_offset={
        'east0':0,
        'east1':1,
        'east2':2,
        'east3':3,
        'east4':4,
        'east5':5,
        'east6':6,
        'east7':7,
        'east8':8,
        'east9':9,
        'east10':10,
        'east11':11,
        'east12':12,
        'west1':-1,
        'west2':-2,
        'west3':-3,
        'west4':-4,
        'west5':-5,
        'west6':-6,
        'west7':-7,
        'west8':-8,
        'west9':-9,
        'west10':-10,
        'west11':-11,
        'west12':-12,
        'Asia/Shanghai':"8"
    };

    在日期上进行偏移:

    1.

    Date.prototype.addHours = function(h)
    {//h可以是数字,如果为数字表示小时,可以为字符串,表示为 数字小时.数字分钟.数字秒,h可以是正数,也可以为负数
        if (typeof(h)=="string") {
            num_symbol="";
            if (h[0]=='-'){//如果h为负数的字符串,则符号为-,值为后面字符串
                num_symbol="-";
                h= h.substr(1);
            }
            var pattern =/d+/g;
            number_list= h.match(pattern);//获取数字列表
            _hour=0;
            _minute=0;
            _seconds=0;
            if (number_list.length>0){
                _hour=parseInt(num_symbol+number_list[0]);
            }
            if (number_list.length>1){
                _minute=parseInt(num_symbol+number_list[1]);
            }
            if (number_list.length>2){
                _seconds=parseInt(num_symbol+number_list[2]);
            }
            this.setHours(this.getHours()+_hour,this.getMinutes()+_minute,this.getSeconds()+_seconds);
        }
        else {//如果h非字符串而是单个数字,表示小时
            this.setHours(this.getHours()+parseInt(h),this.getMinutes(),this.getSeconds());
        }
    };

     2.

    Date.prototype.addHours = function(h)
    {//h可以是数字,如果为数字表示小时,可以为字符串,表示为 数字小时.数字分钟.数字秒,h可以是正数,也可以为负数
        var timestamp=Date.parse(this);
        timestamp=timestamp+parseInt(h)*60*60*1000;
        newdate=new Date()
        newdate.setTime(timestamp)
        return newdate
    };

    以字符串格式输出日期,并且加上时区的定义

    Date.prototype.format = function(fmt,tz)
    { //author: meizz
        //如果没有tz时区指示符号,则使用本地时区
        if (!tz){
            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()             //毫秒
            };
        }
        else{
            tz_time=this.addHours(tz_offset[tz]);
            var o = {
                "M+" : tz_time.getUTCMonth()+1,                 //月份
                "d+" : tz_time.getUTCDate(),                    //
                "h+" : tz_time.getUTCHours(),                   //小时
                "m+" : tz_time.getUTCMinutes(),                 //
                "s+" : tz_time.getUTCSeconds(),                 //
                "q+" : Math.floor((tz_time.getUTCMonth()+3)/3), //季度
                "S"  : tz_time.getUTCMilliseconds()             //毫秒
            };
        }
        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;
    } ;
  • 相关阅读:
    C# 操作Orcle数据库
    WinDbg排查CPU高的问题
    NetCore微服务实战体系:日志管理
    NetCore微服务实战体系:Grpc+Consul 服务发现
    解惑求助-关于NetCore2.2中间件响应的问题
    EF Join连接查询的坑
    给DataTable添加行的几种方式
    [C#] 折腾海康威视的人体测温 模组
    [WPF 学习] 15.播放百度合成的语音
    [WPF 学习] 14.PlaceHolder的简单实现
  • 原文地址:https://www.cnblogs.com/yasmi/p/4971004.html
Copyright © 2020-2023  润新知