一个方便的日期格式器

JavaScript的Date类型只能直接输出特定的形式的表示时间的字符,如:Tue Sep 20 2016 21:37:06 GMT+0800

但我们很少需要输出这样格式的时间

本文后面的代码,通过调用$.formatDate()函数,即可输出你想要的格式的时间

如:

var now=new Date();
document。write($.formatDate(now,"M/d/yyyy HH:mm"));

即可输出  9/20/2016 21:37

document.write($.formatDate(now,"M/d/yy HH:mm"));
document.write($.formatDate(now,"MM/d/yyyy HH:mm"));
document.write($.formatDate(now,"EEE MMM, d yyyy hh:mm:ss.S a"));

分别输出 9/20/16 21:43          09/20/2016 21:43

             Wed Sep, 21 2016 07:22:28.767 PM

其中,yyyy代表4位数字的年份,yy代表两位数字的年份;

MMMM代表完整的英文月份名称,MMM代表月份英文名称的缩写,MM代表由0补足的两位数字的月份,M代表月份数字

dd---由0补足的两位数字的月份中的天,d---月份中的天的缩写

EEEE---星期的英文完整名称,EEE---星期的英文名称的缩写

a---上午或下午

HH---由0补足的,2位数字的2,24小时制的第几小时,H---一天中的第几小时,hh---由0补足的,2位数字的12小时制中的第几小时,h---12小时制的第几小时

mm---由0补足的,2位数字的分钟数,m---一小时中的分钟数

ss---由0补足的,2位数字的分钟数,s---一分钟内的秒数,S由0补足的,一秒内的毫秒数

好啦,快收藏下面的代码愉快地使用Date吧!

 

(function($){
  $.formatDate = function(date,pattern) {
    var result = [];
    while (pattern.length>0) {
      $.formatDate.patternParts.lastIndex = 0;
      var matched = $.formatDate.patternParts.exec(pattern);
      if (matched) {
        result.push($.formatDate.patternValue[matched[0]].call(this,date));
        pattern = pattern.slice(matched[0].length);
      }
      else {
        result.push(pattern.charAt(0));
        pattern = pattern.slice(1);
      }
    }
    return result.join(‘‘);
  };

  $.formatDate.patternParts =
    /^(yy(yy)?|M(M(M(M)?)?)?|d(d)?|EEE(E)?|a|H(H)?|h(h)?|m(m)?|s(s)?|S)/;

  $.formatDate.monthNames = [
    ‘January‘,‘February‘,‘March‘,‘April‘,‘May‘,‘June‘,‘July‘,
    ‘August‘,‘September‘,‘October‘,‘November‘,‘December‘
  ];

  $.formatDate.dayNames = [
    ‘Sunday‘,‘Monday‘,‘Tuesday‘,‘Wednesday‘,‘Thursday‘,‘Friday‘,
    ‘Saturday‘
  ];

  $.formatDate.patternValue = {
    yy: function(date) {
      return $.toFixedWidth(date.getFullYear(),2);
    },
    yyyy: function(date) {
      return date.getFullYear().toString();
    },
    MMMM: function(date) {
      return $.formatDate.monthNames[date.getMonth()];
    },
    MMM: function(date) {
      return $.formatDate.monthNames[date.getMonth()].substr(0,3);
    },
    MM: function(date) {
      return $.toFixedWidth(date.getMonth()+1,2);
    },
    M: function(date) {
      return date.getMonth()+1;
    },
    dd: function(date) {
      return $.toFixedWidth(date.getDate(),2);
    },
    d: function(date) {
      return date.getDate();
    },
    EEEE: function(date) {
      return $.formatDate.dayNames[date.getDay()];
    },
    EEE: function(date) {
      return $.formatDate.dayNames[date.getDay()].substr(0,3);
    },
    HH: function(date) {
      return $.toFixedWidth(date.getHours(),2);
    },
    H: function(date) {
      return date.getHours();
    },
    hh: function(date) {
      var hours = date.getHours();
      return $.toFixedWidth(hours>12 ? hours - 12 : hours,2);
    },
    h: function(date) {
      return date.getHours()%12;
    },
    mm: function(date) {
      return $.toFixedWidth(date.getMinutes(),2);
    },
    m: function(date) {
      return date.getMinutes();
    },
    ss: function(date) {
      return $.toFixedWidth(date.getSeconds(),2);
    },
    s: function(date) {
      return date.getSeconds();
    },
    S: function(date) {
      return $.toFixedWidth(date.getMilliseconds(),3);
    },
    a: function(date) {
      return date.getHours() < 12 ? ‘AM‘ : ‘PM‘;
    }
  };

  $.toFixedWidth = function(value,length,fill) {
    var result = (value || ‘‘).toString();
    fill = fill || ‘0‘;
    var padding = length - result.length;
    if (padding < 0) {
      result = result.substr(-padding);
    }
    else {
      for (var n = 0; n < padding; n++) result = fill + result;
    }
    return result;
  };

})(jQuery);
时间: 2024-10-07 20:30:29

一个方便的日期格式器的相关文章

分享一个将指定日期格式的字符串转为日期的js函数toDate

今天发现easyui的datetimebox不能正常显示日期,接着自然就是实现toDate的功能,google了下,没找到满意的,都写的很罗嗦.自己写一个,本来以为js的正则也可以用命名group来弄,但是目前看javascript好像不支持.现在实现的代码如下,希望对有需要的人也有帮助. //by dragonimp 2015.5.3 //使用方法: //"2015-5-5 9:10:10".toDate("yyyy-M-d hh:mm:ss") //"

java 判定一个字符串为日期格式

不用正则的情况下,如下代码: package src; import java.text.SimpleDateFormat; public class Main { public static void main(String args[]){ boolean b = checkTime("2014-12-3 15:17:56"); System.out.println(b); } public static boolean checkTime(String time) { boole

JDK8中好用的日期处理-LocalDate类-LocalTime-LocalDateTIme,mysql解决时区相差13小时的问题,日期格式器DateTimeFormatter

set global time_zone='+08:00'; set time_zone = '+08:00'; show variables like '%time_zone:' 原文地址:https://www.cnblogs.com/xwgcxk/p/10894921.html

4种解决json日期格式问题的办法

开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下所示: //设置服务器响应的结果为纯文本格式 context.Response.ContentType = "text/plain"; //学生对象集合 List<Student> students = new List<Student> { new Student(){Name ="Tom&q

json日期格式问题的办法

开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下所示: //设置服务器响应的结果为纯文本格式 context.Response.ContentType = "text/plain"; //学生对象集合 List<Student> students = new List<Student> { new Student(){Name ="Tom&q

Springmvc框架-json数据格式传递过程中-将时间戳转化成标准的日期格式[email&#160;protected]

在上一个小demo中,我们能够看出,其实返回的日期格式也是不对的,现在返回的是一个时间戳,并不是一个标准的日期格式. 解决办法: 第一种:在要转化的实体类中添加@JSONField注解 第二种:配置fastjson的消息转换器,来处理日期格式的问题 springmvc-servlet.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.spring

其他: 微软拼音输入法 自定义时间日期格式

概述 微软拼音输入法 下, 自定义 时间日期格式 这个功能, 让我真正见识到了, 什么是 鸡肋 背景 因为 cpu 和 内存占用的原因, 我换掉了 qq拼音输入法 至于替代品, 我选择了 win10 自带的 微软拼音 但是也遇到了些问题 微软拼音自带的 时间日期格式, 我不是很喜欢 os win10 1. 问题: 时间日期格式 概述 微软拼音 默认的时间日期格式, 不太适合我 我的需求 输入法自带 时间日期格式 微软拼音有 我需要的格式如下 时间 2020-02-07 12:36:52 日期 2

python- 按照日期格式(xxxx-xx-xx)每日生成一个文件

请按照这样的日期格式(xxxx-xx-xx)每日生成一个文件,例如今天生成的文件为2013-09-23.log, 并且把磁盘的使用情况写到到这个文件中. #!/usr/bin/env python #!coding=utf-8 import time import os new_time = time.strftime('%Y-%m-%d') //time.strftime()可以用来获得当前时间,可以将时间格式化为字符串 disk_status = os.popen('df -h').read

js 时间戳转为日期格式

js 时间戳转为日期格式 什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数.Unix时间戳不仅被使用在Unix系统.类Unix系统中,也在许多其他操作系统中被广泛采用. 目前相当一部分操作系统使用32位二进制数字表示时间.此类系统的Unix时间戳最多可以使用到格林威治