整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

JavaScript的日期格式化方法

、继承的方法

与其他类型一样,Date类型也重写了toLocaleString()、toString()和valueOf()方法。

  1. Date类型的toLocaleString()方法会按照与浏览器设置的地区相适应的格式返回日期和时间。
  2. toString()方法则通常返回带有时区信息的日期和时间,其中时间一般以军用时间(即小时的范围是0到23)表示。
  3. valueOf()方法不返回字符串,而是返回日期的毫秒表示。

二、其他日期格式化方法

  1. toDateString()方法以特定于实现的格式显示星期几、月、日和年。
  2. toTimeString()方法以特定于实现的格式显示时、分、秒和时区。
  3. toLocaleDateString()方法以特定于地区的格式显示星期几、月、日和年。
  4. toLocaleTimeString()方法以特定于实现的格式显示时、分、秒。
  5. toUTCString()方法以特定于实现的格式显示完整的UTC日期。

除valueOf()方法以外,其他的方法在输出字符串时,格式因浏览器而异。

还有一个名叫toGMTString()的方法,这是一个与toUTCString()等价的方法,其存在的目的在于确保向后兼容。不过,ECMAScript推荐现在编写的代码一律使用toUTCString()方法。

Go语言渲染html页面的时候,经常需要对日期进行格式化,一种可以在渲染之前,就将变量转换成对应的字符串;另一种根据template的语法在渲染模板的时候进行格式化。

语法:

{{ .<vaiable>.Format <layout>}}

变量后面加Format 格式


layout格式跟time包里面的定义是一样的:

月份 1,01,Jan,January

日 2,02,_2

时 3,03,15,PM,pm,AM,am

分 4,04

秒 5,05

年 06,2006

时区 -07,-0700,Z0700,Z07:00,-07:00,MST

周几 Mon,Monday

比如小时的表示(原定义是下午3时,也就是15时)

3 用12小时制表示,去掉前导0

03 用12小时制表示,保留前导0

15 用24小时制表示,保留前导0

03pm 用24小时制am/pm表示上下午表示,保留前导0

3pm 用24小时制am/pm表示上下午表示,去掉前导0

又比如月份

1 数字表示月份,去掉前导0

01 数字表示月份,保留前导0

Jan 缩写单词表示月份

January 全单词表示月份


例子:

type Log struct{
 ID int
 Info string
 CreateAt time.Time

}

在html里面调用

默认格式:

<span>{{ .CreateAt }}</span>

格式化:

<span> {{ .CreateAt.Format "2006-01-02 15:04:05" }} </span>

niapp中的日历组件需要用到开始时间和结束时间,这个时间是字符串形式的,如'2021-01-21'。

组件网址:https://ext.dcloud.net.cn/plugin?id=56

需求

我的需求是得到7天前到现在日期的字符串形式,即

startDate: '2021-11-04'',
endDate: '2021-11-11',

上代码:

Date.prototype.format = function(fmt) {
	var o = {
		"M+": this.getMonth() + 1, //月份 
		"d+": this.getDate(), //日 
		"h+": this.getHours(), //小时 
		"m+": this.getMinutes(), //分 
		"s+": this.getSeconds(), //秒 
		"q+": Math.floor((this.getMonth() + 3) / 3), //季度 
		"S": this.getMilliseconds() //毫秒 
	};
	if (/(y+)/.test(fmt)) {
		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
	}
	for (var k in o) {
		if (new RegExp("(" + k + ")").test(fmt)) {
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k])
				.length)));
		}
	}
	return fmt;
}
//N天时间戳,时间戳指从1970-01-01 0点开始到某天的毫秒数
function timestamp(days) {
	return days * 24 * 60 * 60 * 1000
}

//几天前,一般以现在的时间为基准,参数默认值老的浏览器可能不支持。
function days_ago(day, base_time = Date.now()) {
	return new Date(base_time - timestamp(day))
}
//最常用的今天、昨天、明天,返回时间戳
function yesterday(){
	return days_ago(1)
}
function tomorrow(){
	return days_ago(-1)
}
function today(){
	return new Date()
}

///字符串格式化的日期,英文常用,如2021-01-01
function en_format(func){
	return func.format('yyyy-MM-dd')
}
function en_today(){
	return en_format(today())
}
function en_yesterday(){
	return en_format(days_ago(1))
}
function en_tomorrow(){
	return en_format(days_ago(-1))
}

function cn_format(func){
	return func.format('yyyy年MM月dd日')
}
//中文版今天,如2020年02月22日
function cn_today(){
	return cn_format(today())
}
//中文版昨天,如1949年10月01日
function cn_yesterday(){
	return cn_format(days_ago(1))
}
//中文版明天,如2035年09月09日
function cn_tomorrow(){
	return cn_format(days_ago(-1))
}

使用方法

cn_today()
'2021年11月10日'
cn_tomorrow()
'2021年11月11日'
cn_yesterday()
'2021年11月09日'
    
en_today()
'2021-11-10'
en_tomorrow()
'2021-11-11'
en_yesterday()
'2021-11-09'

7天前

en_format(days_ago(7))
'2021-11-03'

代码还能再精简,不过于我是已经够用了。

我是@爱玩的安哥,关注我获取更多有用知识