ts 格式化日期输出
功能
像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 格式化日期输出的更多相关文章
- JavaScript格式化日期输出
JavaScript Code 12345678910111213141516171819202122232425262728 <script> window.onload ...
- Java链接MySQL练习题:格式化日期、性别;避免代码注入
一.查询人员名单,按序号 姓名 性格(男或女) 民族(某族) 生日(年月日)输出 import java.sql.*; import java.text.SimpleDateFormat; publi ...
- iOS开发之格式化日期时间(转)
在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理.例如: //实例化一个NSDateFormatter对象 NSDateForma ...
- 格式化日期时间字符串 Get-Date -Uformat , -format
#将字符串格式化为时间格式 $dateTimeStr = '20141231T23:59:59' $format = 'yyyyMMddTHH:mm:ss' $formatProvider = [Gl ...
- IOS开发之格式化日期时间
IOS开发之格式化日期时间(转) 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理. 例如: //实例化一个NSDateFor ...
- mysql格式化日期的函数
转自:https://www.cnblogs.com/duhuo/p/5650876.html mysql格式化日期 mysql查询记录如果有时间戳字段时,查看结果不方便,不能即时看到时间戳代表的 ...
- SimpleDateFormat格式化日期以及日期的相关操作
一.Java中的日期概述 日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题. 在J ...
- EL表达式格式化日期
在EL表达式中要显示"yyyy-MM-dd"格式的日期: 使用<fmt:>格式化标签 1 在页面上导入 <%@ taglib prefix=" ...
- java 使用simpleDateFormat格式化日期 时间.RP
首先了解一下格式化日志的所有表示. 时间日期标识符: yyyy:年 MM:月 dd:日 hh:1~12小时制(1-12) HH:24小时制(0-23) mm:分 ss:秒 S:毫秒 E:星期几 D:一 ...
随机推荐
- K 均值算法(K-means)
K-means算法是最简单的一种聚类算法.算法的目的是使各个样本与所在类均值的误差平方和达到最小(这也是评价K-means算法最后聚类效果的评价标准) K-means聚类算法的一般步骤: 1. 初始化 ...
- 一个有趣的CM
系统 : Windows xp 程序 : Crackme#3 - Self Destructed 程序下载地址 :http://pan.baidu.com/s/1kVxwlaZ 要求 : 注册机编写 ...
- iOS 10 :用 UIViewPropertyAnimator 编写动画
英文:shinobicontrols 译文:戴仓薯 链接:http://www.jianshu.com/p/4244cf130478 [iOS 10 day by day] Day 1:开发 iMes ...
- [Erlang 0106] Erlang实现Apple Push Notifications消息推送
我们的IOS移动应用要实现消息推送,告诉用户有多少条消息未读,类似下图的效果(笑果),特把APNS和Erlang相关解决方案笔记于此备忘. 上面图片中是Apple Notif ...
- Oracle物理体系结构
一.ORACLE 物理体系结构 原理结构图 各部分解释: PGA: 私有内存区,仅供当前发起用户使用. 三个作用 用户登录后的session信息会保存在PGA. 执行排序,如果内存不够,oracle会 ...
- David Camp 微信公众平台开发官方内容拓展版---PHP版本
微信公众平台开发(一) 配置接口 微信公众平台开发(二) 微信公众平台示例代码分析 微信公众平台开发(三) 订阅事件(subscribe)处理 微信公众平台开发(四) 简单回复功能开发 微信公众平台开 ...
- ubuntu16.04连接android手机蓝牙共享网络热点
最近的想要用android手机蓝牙共享wifi网络给ubuntu16.04系统用,查了好多资料,发现网上很少有有用的.自己实践后分享如下. 第一步:手机与电脑配对: 该步骤比较简单,网 ...
- JavaScript的写类方式(6)
时间到了2015年6月18日,ES6正式发布了,到了ES6,前面的各种模拟类写法都可以丢掉了,它带来了关键字 class,extends,super. ES6的写类方式 // 定义类 Person c ...
- 13、Apache中虚拟目录和目录权限配置
一.虚拟目录 之前的个人主页,为了安全起见,需要把~yanji 用户隐藏起来,这时就可以设置个 虚拟目录. 它在Apache服务器应用比较多,能够隐藏系统的真实目录,实用性非常高. 虚拟目录主要 通过 ...
- Excellent Articles
Lisp The roots of lisp Recursive Functions of Symbolic Expressions and Their Computation by Machine, ...