功能

像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. WebStorage记录滚动条位置

    因关注公众号<HTML5学堂>看到这篇文章 "利用本地存储,记录滚动条的位置" ,便好奇敲来试试,然后又看了一些关于WebStorage的资料 附上这篇文章的地址 ht ...

  2. gulp教程之gulp-autoprefixer<转>

    简介: 使用gulp-autoprefixer根据设置浏览器版本自动处理浏览器前缀.使用她我们可以很潇洒地写代码,不必考虑各浏览器兼容前缀.[特别是开发移动端页面时,就能充分体现它的优势.例如兼容性不 ...

  3. Ionic + Cordova 跨平台移动开发环境配置

    1.下载安装JDK(根据各自系统选择32位或64位下载),安装完成之后需要做以下环境变量配置 在“系统变量”中,设置3象属性,JAVA_HOME,PATH,CLASSPATH(大小写无所谓),如果已经 ...

  4. 搭建基于 STM32 和 rt-thread 的开发平台

    我们需要平台 如果说,SharePoint 的价值之一在于提供了几乎开箱即用的 innovation 环境,那么,智能设备的开发平台也一样.不必每次都从头开始,所以需要固定的工作室和开发平台作为创新的 ...

  5. UITableViewHeaderFooterView的封装

    UITableViewHeaderFooterView的封装 特点 1. 封装的 UITableViewHeaderFooterView 能够让用户更好的自定义自己的 headerView; 2. 封 ...

  6. 深入浅出React Native 2: 我的第一个应用

    这是深入浅出React Native教程的第二篇文章. 1. 环境配置 React Native环境配好之后,就可以开始创建我们的第一个App啦. 打开控制台,输入 react-native init ...

  7. 会话技术( Cookie ,Session)

    会话技术:    会话:浏览器访问服务器端,发送多次请求,接受多次响应.直到有一方断开连接.会话结束.        解决问题:可以使用会话技术,在一次会话的多次请求之间共享数据.           ...

  8. Reveal1.5破解,iOS_UI调试利器Reveal最新版本破解方法

    Reveal1.0.7破解 1.官网下载最新版Reveal,拖动应用程序中,运行一次2.下载16进制编辑器"0xED" for mac(http://dl.vmall.com/c0 ...

  9. IT人经济思维之投资 - 创业与投资系列文章

    前面笔者写过一个文(IT从业者的职业规划),主要通过笔者的从业道路的经验,介绍了IT从业者的职业选择道路问题,主要从技术.业务和管理三大方面进行了描述.然后,通过文(IT从业者的职业道路(从程序员到部 ...

  10. Linux iptables 防火墙

    内容摘要 防火墙 防火墙定义 防火墙分类 netfilter/iptables netfilter 设计架构 iptables 简述 iptables 命令详解 命令语法 table 参数 comma ...