zoukankan      html  css  js  c++  java
  • js 时间Date操作 工具类

      1 /*
      2 *javascript 中 Date的工具类,方便string格式的与js时间互转
      3 *主要方法:addDays,addMonths,addYears
      4 */
      5 function runtime(datetime) {
      6     this._millsec = 0;
      7     var _datetime = null;
      8     switch (typeof datetime) {
      9         case 'string':
     10             _datetime = this.strToDate(datetime);
     11             break;
     12         case 'number':
     13         case 'object':
     14             _datetime = new Date(datetime);
     15             break;
     16         default:
     17             _datetime = new Date();
     18             break;
     19     }
     20     this._millsec = _datetime.getTime();
     21     this._synFromMillSec();
     22 }
     23 runtime.prototype._synFromMillSec = function () {
     24     var datetime = new Date(this._millsec);
     25     this.dateTime = datetime;
     26     this.month = datetime.getMonth();
     27     this.year = datetime.getFullYear();
     28     this.dayOfMonth = datetime.getDate();
     29     this.dayOfWeek = datetime.getDay();
     30     this.hours = datetime.getHours();
     31     this.mins = datetime.getMinutes();
     32     this.seconds = datetime.getSeconds();
     33     this.milliSeconds = datetime.getMilliseconds();
     34     this.totalMilliSeconds = this._millsec;
     35 }
     36 
     37 runtime.prototype._synFromNumber = function () {
     38     var datetime = new Date(this.year, this.month, this.dayOfMonth, this.hour, this.mins, this.seconds, this.milliSeconds);
     39     this._millsec = datetime.getMilliseconds();
     40     this.dateTime = datetime;
     41     this.totalMilliSeconds = this._millsec;
     42 }
     43 
     44 //当前时间加毫秒 返回当前实例 [整数]
     45 runtime.prototype.addMilliSeconds = function (ms) {
     46     this._millsec += ms;
     47     this._synFromMillSec();
     48     return this;
     49 }
     50 //当前时间加秒 返回当前实例 [整数]
     51 runtime.prototype.addSeconds = function (sec) {
     52     return this.addMilliSeconds(sec * 1000);
     53 }
     54 //当前时间加分钟 返回当前实例 [整数]
     55 runtime.prototype.addMins = function (mins) {
     56     return this.addMilliSeconds(mins * 60 * 1000);
     57 }
     58 //当前时间加小时 返回当前实例 [整数]
     59 runtime.prototype.addHours = function (hours) {
     60     return this.addMilliSeconds(hours * 60 * 60 * 1000);
     61 }
     62 //当前时间加天 返回当前实例 [整数]
     63 runtime.prototype.addDays = function (days) {
     64     return this.addMilliSeconds(days * 24 * 60 * 60 * 1000);
     65 }
     66 //当前时间加周 返回当前实例 [整数]
     67 runtime.prototype.addWeeks = function (weeks) {
     68     return this.addMilliSeconds(weeks * 7 * 24 * 60 * 60 * 1000);
     69 }
     70 
     71 //当前时间加月 返回当前实例 [整数]
     72 runtime.prototype.addMonths = function (months) {
     73     var tm = months % 12;
     74     var ty = (months - tm) / 12;
     75     var cm = this.month + tm;
     76     if (cm > 11) {
     77         ty++;
     78         cm = cm - 11;
     79     } else if (cm < 0) {
     80         ty--;
     81         cm = cm + 11;
     82     }
     83     this.year += ty;
     84     this.month = cm;
     85     var currMDays = this.monthDays();
     86     if (currMDays < this.dayOfMonth) {
     87         this.dayOfMonth = currMDays;
     88     }
     89     this._synFromNumber();
     90     return this;
     91 }
     92 //当前时间加年 返回当前实例 [整数]
     93 runtime.prototype.addYears = function (years) {
     94     return this.addMonths(years * 12);
     95 }
     96 
     97 //是否是润年
     98 runtime.prototype.isRun = function () {
     99     var pYear = this.year;
    100     if ((pYear % 4 == 0 && pYear % 100 != 0) || (pYear % 100 == 0 && pYear % 400 == 0)) {
    101         return true;
    102     } else {
    103         return false;
    104     }
    105 }
    106 //当月天数
    107 runtime.prototype.monthDays = function () {
    108     switch (this.month + 1) {
    109         case 1:
    110         case 3:
    111         case 5:
    112         case 7:
    113         case 8:
    114         case 10:
    115         case 12:
    116             return 31;
    117         case 2:
    118             if (this.isRun())
    119                 return 29;
    120             return 28;
    121         default:
    122             return 30;
    123     }
    124 }
    125 //中文星期
    126 runtime.prototype.weekToCnName = function () {
    127     var show_day = new Array('星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六');
    128     return show_day[this.dayOfWeek];
    129 }
    130 
    131 //string 转 Date 如:2012-12-12 01:01:01
    132 runtime.prototype.strToDate = function (str) {
    133     if (!str)
    134         return;
    135     var s = str + '';
    136     var sp = '';
    137     if (s.indexOf('-') > 0) {
    138         sp = '-';
    139     } else if (s.indexOf('/') > 0) {
    140         sp = '/';
    141     }
    142     else {
    143         return;
    144     }
    145     var year = s.match(new RegExp('[0-9]{4}'))[0];
    146     var month = s.match(new RegExp(sp + '[0-9]{1,2}', 'g'))[0].replace(sp + "", '');
    147     var day = s.match(new RegExp(sp + '[0-9]{1,2}', 'g'))[1].replace(sp + "", '');
    148     var contain_time = s.indexOf(':') > 0;
    149     var hour = 0, min = 0, second = 0, ms = 0;
    150     if (contain_time) {
    151         hour = s.match(new RegExp('[0-9]{2}:', 'g'))[0].replace(/:/g, '');
    152         min = s.match(new RegExp('[0-9]{2}:', 'g'))[1].replace(/:/g, '');
    153         second = s.match(new RegExp(':[0-9]{2}', 'g'))[1].replace(/:/g, '');
    154         ms = s.match(new RegExp('.[0-9]{3}$', 'g'))[0].replace(/./g, '');
    155         hour = parseInt(hour);
    156         min = parseInt(min);
    157         second = parseInt(second);
    158         if (ms)
    159             ms = parseInt(ms);
    160         else
    161             ms = 0;
    162     }
    163     var dt = new Date(parseInt(year), parseInt(month) - 1, parseInt(day), hour, min, second, ms);
    164     return dt;
    165 }
    166 // 深copy当前对象
    167 runtime.prototype.clone = function () {
    168     return new runtime(this.dateTime);
    169 }
    170 
    171 //转字符串输入 如 fmt=yyyy年MM月dd日cweek
    172 runtime.prototype.formatDateString = function (fmt) {
    173     var result = fmt || "";
    174     result = result.replace(/yyyy/g, this.year)
    175         .replace(/yy/g, this.year.toString().substr(2, 2))
    176         .replace(/MM/g, (this.month + 1) < 10 ? ('0' + (this.month + 1).toString()) : (this.month + 1))
    177         .replace(/M/g, (this.month + 1).toString())
    178         .replace(/dd/g, this.dayOfMonth < 10 ? ('0' + this.dayOfMonth) : this.dayOfMonth)
    179         .replace(/d/g, this.dayOfMonth)
    180         .replace(/HH/g, this.hours < 10 ? ('0' + this.hours) : this.hours)
    181         .replace(/H/g, this.hours)
    182         .replace(/mm/g, this.mins < 10 ? ('0' + this.mins) : this.mins)
    183         .replace(/m/g, this.mins)
    184         .replace(/ss/g, this.seconds < 10 ? ('0' + this.seconds) : this.seconds)
    185         .replace(/s/g, this.seconds)
    186         .replace(/fff/g, this.milliSeconds < 10 ? ('00' + this.milliSeconds) : (this.milliSeconds < 100 ? ('0' + this.milliSeconds) : (this.milliSeconds)))
    187         .replace(/ff/g, this.milliSeconds)
    188         .replace(/f/g, this.milliSeconds)
    189         .replace(/cweek/g, this.weekToCnName());
    190     return result;
    191 }
    192 
    193 //转为string
    194 runtime.prototype.toString = function () {
    195     return this.formatDateString('yyyy/MM/dd HH:mm:ss.fff');
    196 }
  • 相关阅读:
    html5中让页面缩放的4种方法
    Beautiful Soup教程 转
    python 第三方模块 转 https://github.com/masterpy/zwpy_lst
    Windows安装Python图像处理库:PIL模块
    python常见的模块
    BeautifulSoup 常用方法
    服务器用户连接数设置
    如何查看IIS并发连接数【转】
    .net 时间戳和日期互转 【转】http://www.cnblogs.com/zhuiyi/p/5307540.html
    Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
  • 原文地址:https://www.cnblogs.com/yingheyiwai/p/6655580.html
Copyright © 2011-2022 走看看