1. /**
  2. * 日期格式化,
  3. * @param date 要格式化的日期
  4. * @param pattern 进行格式化的模式
  5. * 支持的模式字母有:
  6. * y:年,
  7. * M:年中的月份(1-12),
  8. * d:月份中的天(1-31),
  9. * H:小时(0-23),
  10. * h:小时(0-12),
  11. * m:分(0-59),
  12. * s:秒(0-59),
  13. * S:毫秒(0-999),
  14. * E:星期(以汉语表示),
  15. * e:星期(以英文表示),
  16. * A:上午/下午标识,
  17. * a:AM/PM标识
  18. * @return
  19. */
  20. function formatDate(date,pattern){
  21. var d;
  22. if((d=parseDate(date))==null){
  23. return "";
  24. }
  25. if(!pattern){
  26. pattern = "yyyy-MM-dd";
  27. }
  28. var arrWeek = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六","Sunday","Monday","Tuesday","Tuesday","Thursday","Friday","Saturday"];
  29. var value = new Object();
  30. value["y"] = parseString(date.getFullYear());
  31. value["M"] = parseString(date.getMonth() + 1);
  32. value["d"] = parseString(date.getDate());
  33. value["H"] = parseString(date.getHours());
  34. value["h"] = parseString(value["H"] > 12 ? (value["H"]-12) : value["H"]);
  35. value["m"] = parseString(date.getMinutes());
  36. value["s"] = parseString(date.getSeconds());
  37. value["S"] = parseString(date.getMilliseconds());
  38. value["E"] = arrWeek[date.getDay()];
  39. value["e"] = arrWeek[date.getDay() + 7];
  40. value["a"] = (value["H"] > 12 ? "PM" : "AM");
  41. value["A"] = (value["H"] > 12 ? "下午" : "上午");
  42. var result = "";
  43. var i = 0;
  44. var hasE = false;//是否出现过星期
  45. var hasAMPM = false;//是否出现过上午下午
  46. while(i < pattern.length){
  47. var c = pattern.charAt(i++);
  48. var lc = c;//记录本次要处理的字母,如'y'
  49. var tmpStr = c;//本次在处理的字母格式,如'yyyy'
  50. while(i < pattern.length && (c=pattern.charAt(i))==lc){
  51. tmpStr += c;
  52. i++;
  53. }
  54. if(value[lc]!=""&&value[lc]!=null&&value[lc]!="undefined"){
  55. //本次要处理的字母是模式母
  56. if((lc == "E" || lc == "e") && !hasE){
  57. //星期
  58. result += value[lc];
  59. hasE = true;
  60. } else if(lc == "E" || lc == "e") {
  61. result += tmpStr;
  62. } else if((lc=="a" || lc == "A") && !hasAMPM){
  63. //上下午
  64. result += value[lc];
  65. hasAMPM = true;
  66. } else if((lc=="a" || lc == "A") ){
  67. result += tmpStr;
  68. } else {
  69. //如果是 单个的日期,月份,小时,分,秒的字符串,不能再进行字符串的截取操作
  70. if(tmpStr == "d" || tmpStr == "M" || tmpStr=="H" || tmpStr=="h" || tmpStr == "m" || tmpStr == "s"){
  71. result += value[lc];
  72. } else {
  73. result += value[lc].fillChar(tmpStr.length);
  74. }
  75. }
  76. } else {//非模式字母,直接输出
  77. result += tmpStr;
  78. }
  79. }
  80. return result;
  81. }

测试:

  1. var date = new Date();
  2. document.write(formatDate(date,"yyyy-MM-dd HH:mm:ss.SSS E") + "<br>");
  3. document.write(formatDate(date,"yyyy年MM月dd日 HH时mm分ss秒 E") + "<br>");
  4. document.write(formatDate(date,"yyyy-M-d hh:mm:ss.SSS A E") + "<br>");
  5. document.write(formatDate(date,"MM/dd/yy hh:mm:ss a e") + "<br>");
  6. document.write(formatDate(date,"M/d/yyyy") + "<br>");

JavaScript-日期格式化(一)的更多相关文章

  1. JavaScript 日期格式化 简单有用

    JavaScript 日期格式化 简单有用 代码例如以下,引入jquery后直接后增加下面代码刷新可測试 Date.prototype.Format = function (fmt) { //auth ...

  2. Javascript 日期格式化

    Javascript 日期格式化 需求: 给出:日期 .格式,根据日期格式进行输出. Date.prototype.Format = function (fmt) { //author: meizz ...

  3. javascript日期格式化方法汇总

    本文给大家汇总介绍了javascript格式化日期时间的几种常用方法,个人对最后一种个性化输出时间比较有兴趣,基本上只要项目中能用到都是使用这种,推荐给小伙伴们. 方法一: ? 1 2 3 4 5 6 ...

  4. (转)javascript日期格式化扩展

    转自:http://blog.csdn.net/vbangle/article/details/5643091 javascript Date format(js日期格式化)   方法一:这个很不错, ...

  5. 一个JavaScript日期格式化扩展函数

    我们都知道在Java和PHP语言中,有专门用于格式化日期对象的类和函数,例如Java中的DateFormat等等,通过这些类和函数,我们可以方便的将一个日期对象按照格式的要求输出为字符串,例如对于同一 ...

  6. Javascript 日期格式化 相关操作

    1.相关扩展函数 //--------------------------------------------------- // 判断闰年 //--------------------------- ...

  7. Javascript日期格式化指定格式的字符串实现

    代码部分 TypeScript /** * format a Date object * 将 Date 转化为指定格式的String * @param {Date} date 源日期对象 * @par ...

  8. 轻松搞定javascript日期格式化问题

    Date.prototype.format = function(f){ var d = this f = f || "yyyy-MM-dd hh:mm:ss" return f. ...

  9. JavaScript日期格式化处理

    /** * 获取年月,如:2018-08 */ export function getMonth () { return formatDate(new Date(), 'yyyy-MM') } /** ...

  10. javascript常用开发笔记:一个简单强大的js日期格式化方法

    前言:一直没找到好用的javascript日期格式化工具,自己写了一个,方便以后复用 1.主要功能 (1)支持任意顺序的日期格式排列:yyyy=年,MM=月,dd=日,HH=时,mm=分,ss=秒,s ...

随机推荐

  1. ZOJ 1068 P,MTHBGWB

    原题链接 题目大意:给定一个字符串,先用Morse Code编码,把编码倒序,再解码成字符串.现给定处理后的字符串,求原始信息. 解法:用C++String类的函数.每次读入一个字符,就在string ...

  2. js 如何判断页面里的某个值改变

    程序未改变变量的值前新增全局变量:var oldDivValue = document.getElementById("divid").innerHTML; 程序在改变变量值后执行 ...

  3. JavaScript HTML DOM---遗漏知识再整理(向html添加/删除元素,改变内容和css)

    1.  HTML DOM 改变 HTML 内容:(HTML DOM 允许 JavaScript 改变 HTML 元素的内容.) (1)改变 HTML 输出流 在 JavaScript 中,docume ...

  4. POJ 3928 Ping pong(树状数组)

                                                                          Ping pong Time Limit: 1000MS   ...

  5. 附录三 嵌入式C程序的编译与调试

    课程回顾 C语言库的特性和发展 C语言库的常用库函数 标准库函数的特色应用 git@github.com:Kevin-Dfg/Data-Structures-and-Algorithm-Analysi ...

  6. C#编写的windows程序随系统启动

    url:http://www.cnblogs.com/emanlee/archive/2009/08/31/1557380.html 设置某程序随系统启动自动运行,取消自动运行. 使用到using M ...

  7. Linux驱动设计——字符设备驱动(一)

    Linux字符设别驱动结构 cdev结构体 struct cdev { struct kobject kobj; struct module *owner; const struct file_ope ...

  8. ADC 分辨率和精度的区别

    分辨率和精度这两个,经常拿在一起说,才接触的时候经常混为一谈.对于ADC来说,这两样也是非常重要的参数,往往也决定了芯片价格,显然,我们都清楚同一个系列,16位AD一般比12位AD价格贵,但是同样是1 ...

  9. SQL Server 系统表简介

    SQL Server 系统表简介 系统目录是由描述SQL Server 系统的数据库.基表.视图和索引等对象的结构的系统表组成.SQL Server 经常访问系统目录,检索系统正常运行所需的必要信息. ...

  10. IIS6下PHP环境的资源未找到(404)问题

    故障现象: 无法找到该页, 404错误