功能

像C#中DateTime的ToString的格式化输出一样,在js/ts中输出格式化的日期字符串

网上很多正则的,不加分隔符就不行了,和C#的格式也不一样

刚接触js/ts没两月,可能会有问题。

效果

实现

/**
* 对日期进行格式化, 和C#大致一致 默认yyyy-MM-dd HH:mm:ss
* 可不带参数 一个日期参数 或一个格式化参数
* @param date 要格式化的日期
* @param format 进行格式化的模式字符串
* 支持的模式字母有:
* y:年,
* M:年中的月份(1-12),
* d:月份中的天(1-31),
* H:小时(0-23),
* h:小时(0-11),
* m:分(0-59),
* s:秒(0-59),
* f:毫秒(0-999),
* q:季度(1-4)
* @return String
* @author adswads@gmail.com
*/
public dateFormat(date?: any, format?: string): string {
//无参数
if (date == undefined && format == undefined) {
date = new Date();
format = "yyyy-MM-dd HH:mm:ss";
}
//无日期
else if (typeof (date) == "string") {
format = date;
date = new Date();
}
//无格式化参数
else if (format === undefined) {
format = "yyyy-MM-dd HH:mm:ss";
}
else { }
//没有分隔符的特殊处理 var map = {
"y": date.getFullYear() + "",//年份
"M": date.getMonth() + 1 + "", //月份
"d": date.getDate() + "", //日
"H": date.getHours(), //小时 24
"m": date.getMinutes() + "", //分
"s": date.getSeconds() + "", //秒
"q": Math.floor((date.getMonth() + 3) / 3) + "", //季度
"f": date.getMilliseconds() + "" //毫秒
};
//小时 12
if (map["H"] > 12) { map["h"] = map["H"] - 12 + ""; }
else { map["h"] = map["H"] + ""; }
map["H"] += ""; var reg = "yMdHhmsqf";
var all = "", str = "";
for (var i = 0, n = 0; i < reg.length; i++) {
n = format.indexOf(reg[i]);
if (n < 0) { continue; }
all = "";
for (; n < format.length; n++) {
if (format[n] != reg[i]) {
break;
}
all += reg[i];
}
if (all.length > 0) {
if (all.length == map[reg[i]].length) {
str = map[reg[i]];
}
else if (all.length > map[reg[i]].length) {
if (reg[i] == "f") {
str = map[reg[i]] + this.charString("0", all.length - map[reg[i]].length);
}
else {
str = this.charString("0", all.length - map[reg[i]].length) + map[reg[i]];
}
}
else {
switch (reg[i]) {
case "y": str = map[reg[i]].substr(map[reg[i]].length - all.length); break;
case "f": str = map[reg[i]].substr(0, all.length); break;
default: str = map[reg[i]]; break;
}
}
format = format.replace(all, str);
}
}
return format;
} /**
* 返回字符串 为n个char构成
* @param char 重复的字符
* @param count 次数
* @return String
* @author adswads@gmail.com
*/
public charString(char: string, count: number): string {
var str: string = "";
while (count--) {
str += char;
}
return str;
}

ts 格式化日期输出的更多相关文章

  1. JavaScript格式化日期输出

     JavaScript Code  12345678910111213141516171819202122232425262728   <script>     window.onload ...

  2. Java链接MySQL练习题:格式化日期、性别;避免代码注入

    一.查询人员名单,按序号 姓名 性格(男或女) 民族(某族) 生日(年月日)输出 import java.sql.*; import java.text.SimpleDateFormat; publi ...

  3. iOS开发之格式化日期时间(转)

    在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理.例如: //实例化一个NSDateFormatter对象 NSDateForma ...

  4. 格式化日期时间字符串 Get-Date -Uformat , -format

    #将字符串格式化为时间格式 $dateTimeStr = '20141231T23:59:59' $format = 'yyyyMMddTHH:mm:ss' $formatProvider = [Gl ...

  5. IOS开发之格式化日期时间

    IOS开发之格式化日期时间(转)   在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如: //实例化一个NSDateFor ...

  6. mysql格式化日期的函数

    转自:https://www.cnblogs.com/duhuo/p/5650876.html mysql格式化日期   mysql查询记录如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的 ...

  7. SimpleDateFormat格式化日期以及日期的相关操作

    一.Java中的日期概述   日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题.   在J ...

  8. EL表达式格式化日期

    在EL表达式中要显示"yyyy-MM-dd"格式的日期: 使用<fmt:>格式化标签     1 在页面上导入   <%@ taglib prefix=" ...

  9. java 使用simpleDateFormat格式化日期 时间.RP

    首先了解一下格式化日志的所有表示. 时间日期标识符: yyyy:年 MM:月 dd:日 hh:1~12小时制(1-12) HH:24小时制(0-23) mm:分 ss:秒 S:毫秒 E:星期几 D:一 ...

随机推荐

  1. 操作DOM

    操作dom一般是如下4个:更新:更新该DOM节点的内容,相当于更新了该DOM节点表示的HTML的内容:遍历:遍历该DOM节点下的子节点,以便进行进一步操作:添加:在该DOM节点下新增一个子节点,相当于 ...

  2. [deviceone开发]-利用do_ListView模拟单选功能

    一.简介 这个是利用do_ListView组件实现多个选项里选择一项的功能,示例很简单,但是有助于理解复用机制,也可以直接参考使用.初学者推荐.二.效果图 三.相关下载 https://github. ...

  3. sharepoint2013的审核日志的时间区域设置

    最近在项目中碰到审核日志的时间为GMT格式 ,如何格式化成本地时间. 网站集设置成本地区域无法解决此类问题,后来查询资料才知道.无法更改 Change Audit Time From GMT Time ...

  4. 基础理解1:JSONP

    首先要确认三点: 1.不要被名字误导,返回的格式是随意的string,int等 2.JSONP用的是Script标签跨域的特性 3.回调函数名字和请求参数问题,不要被众多文章中的callback误导, ...

  5. 关于csrss.exe和winlogon.exe进程多、占用CPU高的解决办法,有人在暴力破解

    关于csrss.exe和winlogon.exe进程多.占用CPU高的解决办法 最近VPS的CPU一直处在100%左右,后台管理上去经常打不开,后来发现上远程都要好半天才反映过来,看到任务管理器有多个 ...

  6. 《C#高级编程》读书笔记

    <C#高级编程>读书笔记 C#类型的取值范围 名称 CTS类型 说明 范围 sbyte System.SByte 8位有符号的整数 -128~127(−27−27~27−127−1) sh ...

  7. 具备 jQuery 经验的人如何学习AngularJS(附:学习路径)

    这是一个来自stackoverflow的问答,三哥直接把最佳回答搬过来了. 都说AngularJS的学习曲线异常诡异~~~ Q: “Thinking in AngularJS” if I have a ...

  8. VB程序架构分析

    在08年,我曾经写过VB程序.前面也将该VB程序的架构剥离出来并发出来共享了(具体见http://www.cnblogs.com/lzhdim/archive/2012/03/08/2385028.h ...

  9. 打开MySQL数据库远程访问的权限

    说明:转自,http://www.cnblogs.com/ycsfwhh/archive/2012/08/07/2626597.html    本人亲测方法1有效,方法2待验证 下载GPL版本安装 M ...

  10. 分享dubbo.xsd和idubbo.xsd的可用地址

    dubbo.xsd和idubbo.xsd的官方地址不可用 http://code.alibabatech.com/schema/dubbo/dubbo.xsd似乎挂了,真是淡淡的忧伤啊,然后就各种报错 ...