JavaScript通过Date-Mask将日期转换成字符串的方法


Posted in Javascript onJune 04, 2015

本文实例讲述了JavaScript通过Date-Mask将日期转换成字符串的方法。分享给大家供大家参考。具体实现方法如下:

var MonthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var DayNames = [ "Sunday", "Monday", "Tueday", "Wednesday", "Thursday", 
  "Friday", "Saturday" ];
var ShortMths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", 
  "Sep", "Oct", "Nov", "Dec"];
var ShortDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
var StringToDate = function (sDate, sFormat, cutOff) {
  // Input: a date value as a string, it's format as a string e.g. 'dd-mmm-yy'
  // Optional: a cutoff (integer) for 2 digit years.
  // If no 'd' appears in the format string then the 1st of the month is assumed.
  // If the year is 20 and the cut-off is 30 then the value will be converted 
  // to 2020; if the year is 40 then this will be converted to 1940.
  // If no cut-off is supplied then '20' will be pre-pended to the year (YY).
  // Output: a string in the format 'YYYY/MM/DD' or ''
  // Will not attempt to convert certain combinations e.g. DMM, MDD, DDM, YYYYD.
  var sParsed, fndSingle;
  // sParsed will be constructed in the format 'YYYY/MM/DD'
  sDate = sDate.toString().toUpperCase();
  sFormat = sFormat.toUpperCase();
  if (sFormat.search(/MMMM|MMM/) + 1) { // replace Mar/March with 03, etc.
    sDate = sDate.replace(new RegExp('(' + ShortMths.join('|') + ')[A-Z]*', 'gi'),
      function (m) {
      var i = ShortMths.indexOf(m.charAt(0).toUpperCase() + 
        m.substr(1, 2).toLowerCase()) + 1;
      return ((i < 10) ? "0" + i : "" + i).toString();
    });
    sFormat = sFormat.replace(/MMMM|MMM/g, 'MM');
  }
  if (sFormat.search(/DDDD|DDD/) + 1) { // replace Tue/Tuesday, etc. with ''
    sDate = sDate.replace(new RegExp('(' + ShortDays.join('|') + ')[A-Z]*', 'gi'),'');
    sFormat = sFormat.replace(/DDDD|DDD/g, '');
  }
  sDate = sDate.replace(/(^|\D)(\d)(?=\D|$)/g, function($0, $1, $2) {
    // single digits 2 with 02
    return $1 + '0' + $2;
  });
  sFormat = sFormat.replace(/(^|[^DMY])(D|M)(?=[^DMY]|$)/g, function($0, $1, $2){
    return $1 + $2 + $2; // replace D or M with DD and MM
  });
  // are there still single Ds or Ms?
  fndSingle = sFormat.search(/(^|[^D])D([^D]|$)|(^|[^M])M([^M]|$)/)+1;
  // do not attempt to parse, for example, 'DMM'
  if ( fndSingle ) return '';
  sFormat = sFormat.replace(/(^|[^Y])(YY)(?=[^Y]|$)/g, function($0, $1, $2, index) {
    var tempDate = sDate.substr(0, index + 1);
    tempDate += (cutOff) ? ((parseInt(sDate.substr(index + 1, 2),10) > cutOff) ? '19' : '20') : '20';
    tempDate += sDate.substr(index + 1);
    sDate = tempDate;
    return $1 + $2 + $2;
  });
  sParsed = ('YYYY/MM/DD').replace(/YYYY|MM|DD/g, function(m){
    return (sFormat.indexOf(m) + 1) ? 
      sDate.substr(sFormat.indexOf(m), m.length) : '';
  });
  if (sParsed.charAt(0) == '/') {
    // if no year specified, assume the current year
    sParsed = (new Date().getFullYear()) + sParsed;
  }
  if (sParsed.charAt(sParsed.length - 1) == '/') {
    // if no date, assume the 1st of the month
    sParsed += '01';
  }
  // should end up with 10 characters..
  return ( sParsed.length == 10 ) ? sParsed : '';
};

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

Javascript 相关文章推荐
JavaScript高级程序设计(第3版)学习笔记 概述
Oct 11 Javascript
Javascript实现真实字符串剩余字数提示的实例代码
Oct 22 Javascript
jquery获取tagName再进行判断
May 29 Javascript
jQuery实现移动端滑块拖动选择数字效果
Dec 24 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
浅析jQuery Ajax通用js封装
Jun 22 Javascript
AngularJs expression详解及简单示例
Sep 01 Javascript
jQuery Easyui datagrid连续发送两次请求问题
Dec 13 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
May 17 Javascript
Angular2环境搭建具体操作步骤(推荐)
Aug 04 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
Vue点击切换Class变化,实现Active当前样式操作
Jul 17 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
Jun 04 #Javascript
JavaScript中Number.MAX_VALUE属性的使用方法
Jun 04 #Javascript
深入理解JavaScript中的对象
Jun 04 #Javascript
详解JavaScript中void语句的使用
Jun 04 #Javascript
用JavaScript实现对话框的教程
Jun 04 #Javascript
用JavaScript实现页面重定向功能的教程
Jun 04 #Javascript
javascript原型模式用法实例详解
Jun 04 #Javascript
You might like
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
删除PHP数组中的重复元素的实现代码
2017/04/10 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
IE下写xml文件的两种方式(fso/saveAs)
2013/08/05 Javascript
当鼠标移动时出现特效的JQuery代码
2013/11/08 Javascript
JavaScript中Form表单技术汇总(推荐)
2016/06/26 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
layui的table中显示图片方法
2018/08/17 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
[02:39]DOTA2国际邀请赛助威团西雅图第一天
2013/08/08 DOTA
Python实现模拟时钟代码推荐
2015/11/08 Python
Python聚类算法之基本K均值实例详解
2015/11/20 Python
python运行其他程序的实现方法
2017/07/14 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
python提取具有某种特定字符串的行数据方法
2018/12/11 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
如何理解python面向对象编程
2020/06/01 Python
很酷的HTML5电子书翻页动画特效
2016/02/25 HTML / CSS
请说出以下代码输出什么
2013/08/30 面试题
安全资料员岗位职责
2013/12/14 职场文书
军训 自我鉴定
2014/02/03 职场文书
老兵退伍感言
2015/08/03 职场文书
SQL中的三种去重方法小结
2021/11/01 SQL Server