JS实现处理时间,年月日,星期的公共方法示例


Posted in Javascript onMay 31, 2019

本文实例讲述了JS实现处理时间,年月日,星期的公共方法。分享给大家供大家参考,具体如下:

在项目中用到的,用js 来得到年月日,星期,当前多少个周的函数,备忘在这里,以后参考。

Date.prototype.getWeek = function(){
  var firstDayOfYear = new Date(this.getFullYear(),0,1);
  var millOfDay = 24*60*60*1000;
  return Math.ceil((((this - firstDayOfYear) / millOfDay) + firstDayOfYear.getDay()+1)/7);
};
/*
01 October 2013-10:20:20
01 November 2013-10:20:20
01 December 2013-10:20:20
08 October 2013-01:55 pm
*/
var monthMapping = {
  "January" : "01",
  "February" : "02",
  "March" : "03",
  "April" : "04",
  "May" : "05",
  "June" : "06",
  "July" : "07",
  "August" : "08",
  "September" : "09",
  "October" : "10",
  "November" : "11",
  "December" : "12"
};
function formatAmPm() {
  var dateTimeStr = arguments[0] ;  
  var dateStr = dateTimeStr.split("-");
  if (lang.currentLang == "zh_CN" || lang.currentLang == "zh_TW"){
    var s_year = lang.getMessage('yearCn') ;
    var s_month = lang.getMessage('monthCn') ;
    var s_day = lang.getMessage('dayCn') ;
    var dateArray = dateStr[0].split(" ") ;
    var s_time = dateStr[1].split(" ")[1] == "am" ? lang.getMessage('amCn') :lang.getMessage('pmCn') ;
    var ret = dateArray[2] + s_year + monthMapping[dateArray[1]] + s_month + dateArray[0] + s_day + " " + s_time + dateStr[1].split(" ")[0] ; 
    if ( arguments.length > 1 ){
      /*admin feature ,so using en date*/
      ret = arguments[1] ? dateStr[0] : dateStr[1] ;
    }
    return ret ;
  }  
  else{
    if ( arguments.length > 1 ){
      return arguments[1] ? dateStr[0] : dateStr[1] ;      
    }
    else{
      return dateStr[0] + " " + dateStr[1] ;
    }
  }  
}
function formatDate(dateTime, pattern) {
  if(pattern == "" || pattern == null) {
    pattern = "/";
  }
  var date = new Date(dateTime);
  var year = date.getFullYear();
  var month = date.getMonth()+1;
  month = month <10 ? '0'+month : month;
  var day = date.getDate();
  day = day <10 ? '0'+day : day;
  return month + pattern + day + pattern + year;
}
function formatDateDDMMYYYY(dateTime) {
  var ymd = dateTime.split(" ")[0];
  var dateArray = ymd.split("-");
  return dateArray[2]+"."+dateArray[1]+"."+dateArray[0];
}
/**
* 
* @param dateTime YYYY-MM-DD hh:mm:ss
*/
function formatDateDDMMYY(dateTime){
  var ymd = dateTime.split(" ")[0];
  var dateArray = ymd.split("-");
  return dateArray[2]+"."+dateArray[1]+"."+dateArray[0].substring(2);
}
/**********************calculate date*****************************/
var MONTH = [
       {key:"Jan.",value:1},
       {key:"Feb.",value:2},
       {key:"Mar.",value:3},
       {key:"Apr.",value:4},
       {key:"May.",value:5},
       {key:"Jun.",value:6},
       {key:"Jul.",value:7},
       {key:"Aug.",value:8},
       {key:"Sept.",value:9},
       {key:"Oct.",value:10},
       {key:"Nov.",value:11},
       {key:"Dec.",value:12}          
       ];
var DAYS = [31,28,31,30,31,30,31,31,30,31,30,31];
function getYears(){
  var years = [];
  var date = new Date();
  var year = date.getFullYear();
  var minYear = year - 10;  
  for(var currentYear=minYear;currentYear <= year;currentYear++){
    years.push(currentYear);
  }
  return years;
};
function fillinMonthOptions(id,currentMonth){
  $("#" + id).get(0).options.length = 0;
  for(var i= 0;i<MONTH.length; i++){
    if (MONTH[i].value == currentMonth){
      $("#" + id).append("<option value="+MONTH[i].value+" selected=\"selected\">"+MONTH[i].key+"</option>");
    }
    else{
      $("#" + id).append("<option value="+MONTH[i].value+">"+MONTH[i].key+"</option>");
    }
  }
};
function fillinAllMonthOptions(monthIds,currentMonth){
  //var monthIds = ["loginMonth_1","loginMonth_2","auditMonth_1","auditMonth_2"];
  for (var i=0;i<monthIds.length;i++){
    fillinMonthOptions(monthIds[i],currentMonth);
  };  
};
function fillinYearOptions(id,years,currentYear){
  $("#" + id).get(0).options.length = 0;
  for(var i= 0;i<years.length; i++){
    if (years[i] == currentYear){
      $("#" + id).append("<option value="+years[i]+" selected=\"selected\">"+years[i]+"</option>");
    }
    else{
      $("#" + id).append("<option value="+years[i]+">"+years[i]+"</option>");
    }
  }
};
function fillinAllYearOptions(yearIds,currentYear){
  //var yearIds = ["loginYear","auditYear"];
  years = getYears();
  for(var i= 0;i<yearIds.length; i++){
    fillinYearOptions(yearIds[i],years,currentYear);
  }
};
function isLeapYear(year){
  return (year % 4 === 0) && (year % 100 !==0) || (year % 400 === 0);
}
/*get days of a month*/
function getMonthDays(year,month){
  var monthDays = DAYS[month-1];
  if (isLeapYear(year) && month == 2){
    monthDays = 29;
  }
  return monthDays;
}
function fillinDay(id,monthDays){
  $("#" + id).get(0).options.length = 0;
  for(var i=1;i<=monthDays;i++){
    $("#" + id).append("<option value="+i+">"+i+"</option>");
  }
}
function fiilinDays(year,month,dayIds){
  var monthDays = getMonthDays(year,month);
  for(var i=0;i<dayIds.length;i++){
    fillinDay(dayIds[i],monthDays);
  }
}
function getWeeksOfYear(year){
  var firstDayOfYear = new Date(year,0,1);
  var days = firstDayOfYear.getDay() + (isLeapYear(year) ? 366 : 365);
  return Math.ceil(days/7);
}
function getCurrentWeekNo(){
  var currentDate = new Date();
  var firstDay = new Date(currentDate.getFullYear(),0,1);
  var dayms = 24 * 60 * 60 * 1000;
  var numday = ((currentDate - firstDay) / dayms );
  var weeks = Math.ceil((numday + firstDay.getDay() + 1) / 7);
  return weeks;
}
function getWeekRangeOfWeek(year,weekNo){
  var tmpDate = new Date("1/20/" + year);
  var numOfDaysPastSinceLastMonday = tmpDate.getDay()-1;
  tmpDate.setDate(tmpDate.getDate() - numOfDaysPastSinceLastMonday);
  var weekNoToday = tmpDate.getWeek();
  var weeksInFuture = weekNo - weekNoToday;
  tmpDate.setDate(tmpDate.getDate() + (7 * weeksInFuture) );
  var rangeFrom = tmpDate.getDate() + "/" + MONTH[tmpDate.getMonth()].key;
  tmpDate.setDate(tmpDate.getDate() + 6);
  var rangeTo = tmpDate.getDate() + "/" + MONTH[tmpDate.getMonth()].key ;
  return weekNo + "_#_" + rangeFrom + "_#_" + rangeTo ;
}
function fillinWeek(weekId,year){
  $("#" + weekId).get(0).options.length = 0;
  var weeksOfYear = getWeeksOfYear(year);
  var weeks = [];
  for(var i=0;i<weeksOfYear;i++){
    weeks.push(getWeekRangeOfWeek(year,i+1));
  }
  for(var j=0;j<weeks.length;j++){
    var week = weeks[j].split("_#_");
    $("#" + weekId).append("<option value="+week[0]+">"+week[0] + "(" + week[1]+"-"+week[2]+")</option>");
  }
}
function fillinWeeks(year,weekIds){
  for (var i=0;i<weekIds.length;i++){
    fillinWeek(weekIds[i],year);
  }
}

PS:这里再为大家推荐几款比较实用的天数计算在线工具供大家使用:

在线日期/天数计算器:
http://tools.3water.com/jisuanqi/date_jisuanqi

在线日期计算器/相差天数计算器:
http://tools.3water.com/jisuanqi/datecalc

在线日期天数差计算器:
http://tools.3water.com/jisuanqi/onlinedatejsq

在线天数计算器:
http://tools.3water.com/jisuanqi/datejsq

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript之ESC(第二类混淆)
May 06 Javascript
锋利的jQuery jQuery中的DOM操作
Mar 21 Javascript
jquery.validate使用攻略 第五步 正则验证
Jul 01 Javascript
js代码验证手机号码和电话号码是否合法
Jul 30 Javascript
jQuery购物网页经典制作案例
Aug 19 Javascript
基于AngularJS前端云组件最佳实践
Oct 20 Javascript
浅谈JavaScript的闭包函数
Dec 08 Javascript
Vue实现简易翻页效果源码分享
Nov 08 Javascript
微信小程序实现发送验证码按钮效果
Dec 20 Javascript
微信小程序开发常见问题及解决方案
Jul 11 Javascript
解决layer.confirm选择完之后消息框不消失的问题
Sep 16 Javascript
vue iview 隐藏Table组件里的某一列操作
Nov 13 Javascript
一文了解vue-router之hash模式和history模式
May 31 #Javascript
vue App.vue中的公共组件改变值触发其他组件或.vue页面监听
May 31 #Javascript
微信小程序环境下将文件上传到OSS的方法步骤
May 31 #Javascript
Vue Router history模式的配置方法及其原理
May 30 #Javascript
vue-cli3+ts+webpack实现多入口多出口功能
May 30 #Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
May 30 #Javascript
了解JavaScript函数中的默认参数
May 30 #Javascript
You might like
基于PHP5魔术常量与魔术方法的详解
2013/06/13 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
jquery获取当前点击对象的value方法
2014/02/28 Javascript
javascript数组详解
2014/10/22 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
2015/10/23 Javascript
jQuery Easyui使用(一)之可折叠面板的布局手风琴菜单
2016/08/17 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
Vue实现导出excel表格功能
2018/03/30 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
浅谈Python数据类型之间的转换
2016/06/08 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
python编写猜数字小游戏
2019/10/06 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
html5手机端页面可以向右滑动导致样式受影响的问题
2018/06/20 HTML / CSS
工商管理专业实习生自我鉴定
2013/09/29 职场文书
旅游管理专业生自荐信范文
2014/01/02 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
2014国庆节标语口号
2014/09/19 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
外出培训学习心得体会
2016/01/18 职场文书
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python