【js】时间相关

1 Date对象

Date - MDN

可以创建一个 JavaScript Date 实例,该实例呈现时间中的某个时刻。主要是创建毫秒级别的。

毫秒ms:13位
秒s:10位

应用:

  • Date.now():获取当前时间的毫秒数

2 moment对象

官方文档:moment.js

需要先安装:

// 安装
npm install moment

// 引入
import moment from 'moment';

// 使用
moment(); // 获取当前时间。等同于moment(new Date())

应用:

  • antd DatePicker日期选择框 中的时间是moment对象,如果我们需要给它赋初始值或者进行某些操作转换,则需要了解改moment的使用。

2 时间转化

(1)给定一个10位或者13位的字符串,将其转换成moment对象。

const formatDate = (str: string) => {
  let num = Number(str);
  // s => ms
  if (str.length === 10) num *= 1000;
  return moment(new Date(num));
};

// 应用
<Item
  name={name}
  key={name}
  label={name}
  extra={memo}
  initialValue={formatDate(value)} // here
  rules={[{ required: !(option === OptionType.NO_REQUIRED) }]}
>
  <DatePicker showTime />
</Item>

(2)给定一个10位的字符串,将其转换成YYYY-MM-DD HH:mm:ss格式展示。

const transformDate = (value: string | number, format = 'YYYY-MM-DD HH:mm:ss') => {
  if (!value) {
    return '';
  }
  return moment(Number(value) * 1000).format(format);
};

(3)获取当前时间戳。

moment().valueOf(); // 获取当前时间戳(毫秒数)
moment().unix(); // 获取当前时间戳(秒数)

Date.now(); // 获取当前时间戳(毫秒数)

(4)获取当天0点和24点的时间戳。

// 当天0点
new Date(new Date().toLocaleDateString()).getTime() // ms

new Date(new Date().setHours(0, 0, 0, 0))/1000 // s

//当天24点
new Date(new Date().setHours(23, 59, 59, 0))/1000 // s

new Date(new Date().toLocaleDateString()).getTime() +24 * 60 * 60 * 1000 -1 // ms

(5)Date和moment结合。

{
  "今天": [moment(new Date().setHours(0, 0, 0, 0)), moment().endOf('day')],
  "近2天": [moment(new Date().getTime() - 3600 * 1000 * 24).startOf('day'), moment().endOf('day')],
  "近7天": [moment(new Date().getTime() - 3600 * 1000 * 24 * 7).startOf('day'), moment().endOf('day')],
  "近30天": [
    moment(new Date().getTime() - 3600 * 1000 * 24 * 30).startOf('day'),
    moment().endOf('day'),
  ],
}

你可能感兴趣的:(javascript)