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的继承的封装介绍
Oct 15 Javascript
javascript分页代码实例分享(js分页)
Dec 13 Javascript
jquery 无限级下拉菜单的简单实现代码
Feb 21 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
Feb 27 Javascript
Bootstrap源码解读媒体对象、列表组和面板(10)
Dec 26 Javascript
原生js编写2048小游戏
Mar 17 Javascript
微信小程序滚动Tab实现左右可滑动切换
Aug 17 Javascript
jQury Ajax使用Token验证身份实例代码
Sep 22 Javascript
js如何获取访问IP、地区、当前操作浏览器
Jul 23 Javascript
微信小程序实现注册登录功能(表单校验、错误提示)
Dec 10 Javascript
详解Vue的ref特性的使用
Jan 24 Javascript
Javascript实现打鼓效果
Jan 29 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
用PHP与XML联手进行网站编程代码实例
2008/07/10 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
php字符串操作常见问题小结
2016/10/11 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
如何解决Jquery库及其他库之间的$命名冲突
2013/09/15 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
Vue.js实现简单ToDoList 前期准备(一)
2016/12/01 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[56:29]Secret vs Optic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python爬取京东的商品分类与链接
2016/08/26 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
Python 如何查找特定类型文件
2020/08/17 Python
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
学生打架检讨书
2014/02/14 职场文书
导航工程专业自荐信
2014/09/02 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
入党函调证明材料
2015/06/19 职场文书
伊索寓言读书笔记
2015/06/30 职场文书