整合营销服务商

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

免费咨询热线:

JavaScript:日期格式化-毫秒时间

回给定毫秒数的可读格式

思路

  • ms除以适当的值,以获得dayhourminute的值;
  • Object.entries() Array.prototype.filter()配合使用以仅保留非零值;
  • 使用Array.prototype.map()为每个值创建字符串,并适当地进行复数化;
  • 使用String.prototype.join(' ')将值组合成字符串。

实现代码

const formatDuration = ( ms ) => {
  if(ms < 0) ms = -ms;

  let time = {
    day: Math.floor(ms / 86400000),
    hour: Math.floor(ms / 3600000) % 24,
    minute: Math.floor(ms / 60000) % 60
  }

  return Object.entries(time)
    .filter(val => val[1] !== 0)
    .map(([key, val])=>{
      if(key === 'day') return `${val}天`
      
      if(key === 'hour') return `${val}时`

      if(key === 'minute') return `${val}分`
    })
    .join(' ');
}

测试代码

let t1 = formatDuration(62341001);
console.log(t1);

let t2 = formatDuration(34325055574);
console.log(t2);


测试结果

17时 19分
397天 6时 44分



代码实现参阅:formatDuration - 30 seconds of code

TML的pre标签

定义和用法

<pre> 标签定义预先格式化的文本。

<pre> 元素中的文本以等宽字体显示,文本保留空格和换行符。文本将完全按照 HTML 源代码中所写的方式显示。

使用(保留原有格式),和div区别

执行结果如下:

在layui中使用,未使用pre,结果如下:在一行显示,不太好看和理解

layer.alert(JSON.stringify(data,null,4));

使用pre标签后,结果如下:json格式化展示出来了,易于理解和好看,方便分析。

layer.alert("<pre>"+JSON.stringify(data,null,4)+"</pre>");


2024-2-26

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>