JavaScript-日期格式化(一)
/**
* 日期格式化,
* @param date 要格式化的日期
* @param pattern 进行格式化的模式
* 支持的模式字母有:
* y:年,
* M:年中的月份(1-12),
* d:月份中的天(1-31),
* H:小时(0-23),
* h:小时(0-12),
* m:分(0-59),
* s:秒(0-59),
* S:毫秒(0-999),
* E:星期(以汉语表示),
* e:星期(以英文表示),
* A:上午/下午标识,
* a:AM/PM标识
* @return
*/
function formatDate(date,pattern){
var d;
if((d=parseDate(date))==null){
return "";
}
if(!pattern){
pattern = "yyyy-MM-dd";
}
var arrWeek = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六","Sunday","Monday","Tuesday","Tuesday","Thursday","Friday","Saturday"];
var value = new Object();
value["y"] = parseString(date.getFullYear());
value["M"] = parseString(date.getMonth() + 1);
value["d"] = parseString(date.getDate());
value["H"] = parseString(date.getHours());
value["h"] = parseString(value["H"] > 12 ? (value["H"]-12) : value["H"]);
value["m"] = parseString(date.getMinutes());
value["s"] = parseString(date.getSeconds());
value["S"] = parseString(date.getMilliseconds());
value["E"] = arrWeek[date.getDay()];
value["e"] = arrWeek[date.getDay() + 7];
value["a"] = (value["H"] > 12 ? "PM" : "AM");
value["A"] = (value["H"] > 12 ? "下午" : "上午");
var result = "";
var i = 0;
var hasE = false;//是否出现过星期
var hasAMPM = false;//是否出现过上午下午
while(i < pattern.length){
var c = pattern.charAt(i++);
var lc = c;//记录本次要处理的字母,如'y'
var tmpStr = c;//本次在处理的字母格式,如'yyyy'
while(i < pattern.length && (c=pattern.charAt(i))==lc){
tmpStr += c;
i++;
}
if(value[lc]!=""&&value[lc]!=null&&value[lc]!="undefined"){
//本次要处理的字母是模式母
if((lc == "E" || lc == "e") && !hasE){
//星期
result += value[lc];
hasE = true;
} else if(lc == "E" || lc == "e") {
result += tmpStr;
} else if((lc=="a" || lc == "A") && !hasAMPM){
//上下午
result += value[lc];
hasAMPM = true;
} else if((lc=="a" || lc == "A") ){
result += tmpStr;
} else {
//如果是 单个的日期,月份,小时,分,秒的字符串,不能再进行字符串的截取操作
if(tmpStr == "d" || tmpStr == "M" || tmpStr=="H" || tmpStr=="h" || tmpStr == "m" || tmpStr == "s"){
result += value[lc];
} else {
result += value[lc].fillChar(tmpStr.length);
}
}
} else {//非模式字母,直接输出
result += tmpStr;
}
}
return result;
}
测试:
var date = new Date();
document.write(formatDate(date,"yyyy-MM-dd HH:mm:ss.SSS E") + "<br>");
document.write(formatDate(date,"yyyy年MM月dd日 HH时mm分ss秒 E") + "<br>");
document.write(formatDate(date,"yyyy-M-d hh:mm:ss.SSS A E") + "<br>");
document.write(formatDate(date,"MM/dd/yy hh:mm:ss a e") + "<br>");
document.write(formatDate(date,"M/d/yyyy") + "<br>");
JavaScript-日期格式化(一)的更多相关文章
- JavaScript 日期格式化 简单有用
JavaScript 日期格式化 简单有用 代码例如以下,引入jquery后直接后增加下面代码刷新可測试 Date.prototype.Format = function (fmt) { //auth ...
- Javascript 日期格式化
Javascript 日期格式化 需求: 给出:日期 .格式,根据日期格式进行输出. Date.prototype.Format = function (fmt) { //author: meizz ...
- javascript日期格式化方法汇总
本文给大家汇总介绍了javascript格式化日期时间的几种常用方法,个人对最后一种个性化输出时间比较有兴趣,基本上只要项目中能用到都是使用这种,推荐给小伙伴们. 方法一: ? 1 2 3 4 5 6 ...
- (转)javascript日期格式化扩展
转自:http://blog.csdn.net/vbangle/article/details/5643091 javascript Date format(js日期格式化) 方法一:这个很不错, ...
- 一个JavaScript日期格式化扩展函数
我们都知道在Java和PHP语言中,有专门用于格式化日期对象的类和函数,例如Java中的DateFormat等等,通过这些类和函数,我们可以方便的将一个日期对象按照格式的要求输出为字符串,例如对于同一 ...
- Javascript 日期格式化 相关操作
1.相关扩展函数 //--------------------------------------------------- // 判断闰年 //--------------------------- ...
- Javascript日期格式化指定格式的字符串实现
代码部分 TypeScript /** * format a Date object * 将 Date 转化为指定格式的String * @param {Date} date 源日期对象 * @par ...
- 轻松搞定javascript日期格式化问题
Date.prototype.format = function(f){ var d = this f = f || "yyyy-MM-dd hh:mm:ss" return f. ...
- JavaScript日期格式化处理
/** * 获取年月,如:2018-08 */ export function getMonth () { return formatDate(new Date(), 'yyyy-MM') } /** ...
- javascript常用开发笔记:一个简单强大的js日期格式化方法
前言:一直没找到好用的javascript日期格式化工具,自己写了一个,方便以后复用 1.主要功能 (1)支持任意顺序的日期格式排列:yyyy=年,MM=月,dd=日,HH=时,mm=分,ss=秒,s ...
随机推荐
- 浅谈jQuery中setInterval()方法
定义和用法: setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口 ...
- 让超链接点击后不跳转,可以用href = "#",但是这个#就会锚点到页面最上边 点击链接后不跳转可以设置成
让超链接点击后不跳转,可以用href = "#",但是这个#就会锚点到页面最上边 点击链接后不跳转可以设置成 1.<a href="javascri ...
- 前后台Json的转换
jsp:JSON.stringify(params):params:表示数组 servlet:Store store = (Store) JSONObject.toBean(JSONObject.fr ...
- ros与下位机通信常用的c++ boost串口应用--22
摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/ 一.首先移植c++ boost 库: 1. 先去 Boost官网 下载最新的Boost版本, 我 ...
- 三级联动查询全国省市区(xml与数据库)
提供有china.xml和china.sql文件,实现全国省市区的三级联动效果 一.xml实现 import java.awt.EventQueue; import javax.swing.JFram ...
- poj3159 最短路(差分约束)
题意:现在需要分糖果,有n个人,现在有些人觉得某个人的糖果数不能比自己多多少个,然后问n最多能在让所有人都满意的情况下比1多多少个. 这道题其实就是差分约束题目,根据题中给出的 a 认为 b 不能比 ...
- Foundation框架 - 快速创建跨平台的网站页面原型
API参考:http://foundation.zurb.com/docs/ 作为网页设计和开发人员,我们面临着以下几个严峻的问题: 每天,人们用来上网的设备种类和数量都在不断上升. 为每种设备设计开 ...
- js类型判断
console.log('---------------------'); var a="string"; console.log(a); //string var a=1; co ...
- linux mount (挂载命令)详解
挂接命令(mount) 首先,介绍一下挂接(mount)命令的使用方法,mount命令参数非常多,这里主要讲一下今天我们要用到的. 命令格式:mount [-t vfstype] [-o option ...
- $.ajax提交,后台接受到的值总是乱码?明天再总结
//首先说明,我的服务器和页面编码都是GBK,所以尝试了很多种GBK的方式前台:function printFunction(){ window.print(); $.ajax({ url : '/t ...