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 new 需不需要继续使用
Jul 02 Javascript
jquery的Theme和Theme Switcher使用小结
Sep 08 Javascript
字符串的replace方法应用浅析
Dec 06 Javascript
jquery+json实现分页效果
Mar 07 Javascript
Ajax使用原生态JS验证用户名是否存在
May 26 Javascript
网页瀑布流布局jQuery实现代码
Oct 21 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
Mar 21 Javascript
JS FormData上传文件的设置方法
Jul 05 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
浅谈JS对象添加getter与setter的5种方法
Jun 09 Javascript
vue实现的双向数据绑定操作示例
Dec 04 Javascript
VUE项目中加载已保存的笔记实例方法
Sep 14 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
一个可以删除字符串中HTML标记的PHP函数
2006/10/09 PHP
php实现压缩多个CSS与JS文件的方法
2014/11/11 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
jQuery获得document和window对象宽度和高度的方法
2015/03/25 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
jQuery使用$.ajax进行即时验证实例详解
2015/12/11 Javascript
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
微信小程序实现循环动画效果
2018/07/16 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
Django保护敏感信息的方法示例
2019/05/09 Python
numpy中生成随机数的几种常用函数(小结)
2020/08/18 Python
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
班长岗位职责
2013/11/10 职场文书
函授毕业自我鉴定
2013/12/19 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
六查六看心得体会
2014/10/14 职场文书
医院财务人员岗位职责
2015/04/14 职场文书
毕业典礼主持词
2015/06/29 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android