【js】js中将时间戳转化成 YYYY-MM-DD HH:mm:ss的3种办法

方法一:dayjs(最推荐)

npm install dayjs
# 或者
yarn add dayjs
const dayjs = require('dayjs');
 
// 假设你有一个时间戳
const timestamp = 1650000000000; // 示例时间戳
 
// 使用dayjs转换时间戳
const formattedDate = dayjs(timestamp).format('YYYY-MM-DD HH:mm:ss');
 
console.log(formattedDate); // 输出转换后的日期和时间

方法二:moment.js

npm install moment
// 引入Moment.js库
const moment = require('moment');
 
// 假设你有一个时间戳
const timestamp = 1609459200000; // 例如:2021年1月1日 00:00:00的时间戳
 
// 使用Moment.js转换时间戳为YYYYMMDD HH:mm:ss格式
const formattedDate = moment(timestamp).format('YYYYMMDD HH:mm:ss');
 
console.log(formattedDate); // 输出:20210101 00:00:00

方法三:原生js(不推荐)

function timestampToYMDHMS(timestamp) {
  const date = new Date(timestamp);
  const year = date.getUTCFullYear();
  const month = ('0' + (date.getUTCMonth() + 1)).slice(-2); // 月份是从0开始的
  const day = ('0' + date.getUTCDate()).slice(-2);
  const hours = ('0' + date.getUTCHours()).slice(-2);
  const minutes = ('0' + date.getUTCMinutes()).slice(-2);
  const seconds = ('0' + date.getUTCSeconds()).slice(-2);
  return `${year}${month}${day} ${hours}:${minutes}:${seconds}`;
}
 
// 示例:
const timestamp = Date.now(); // 或者任何其他的时间戳
const formattedDate = timestampToYMDHMS(timestamp);
console.log(formattedDate); // 输出格式如:20230310 12:34:56
在 GORM 中,可以使用 struct 中的 `time.Time` 类型和 `gorm:"type:timestamp"` tag 来表示时间戳类型的字段。如果要将时间戳自动转换成 `yyyy-mm-dd HH:ii:ss` 格式,可以使用 `time.Time` 的 `Format` 方法进行格式化。 以下是一个示例代码,假设我们有一个 `User` struct: ```go import "time" type User struct { ID uint `gorm:"primary_key"` Name string `gorm:"type:varchar(100)"` CreatedAt time.Time `gorm:"type:timestamp"` } ``` 在查询或创建记录时,`CreatedAt` 字段将自动转换时间戳。如果要在查询结果中将时间戳格式化成 `yyyy-mm-dd HH:ii:ss`,可以使用 GORM 的回调函数进行处理: ```go db.Callback().Query().After("gorm:query").Register("format_time", func(scope *gorm.Scope) { // 检查 struct 中是否有 time.Time 类型的字段 if _, ok := scope.Get("gorm:query_destination"); !ok { return } if _, ok := scope.FieldByName("CreatedAt"); !ok { return } // 获取查询结果中所有的记录 records := scope.Rows() for records.Next() { // 将记录中的时间戳字段转换为格式化的字符串 var createdAt time.Time if err := records.Scan(&createdAt); err != nil { continue } scope.Err(errors.Wrap(err, "failed to scan time.Time field")) createdAtFormatted := createdAt.Format("2006-01-02 15:04:05") // 将格式化后的时间字符串设置回记录中 if err := records.Scan(&createdAtFormatted); err != nil { continue } scope.Err(errors.Wrap(err, "failed to scan formatted time.Time field")) } }) ``` 上述代码中,我们在 GORM 的回调函数中注册了一个 `format_time` 函数,该函数会在查询结果返回后自动执行。在函数中,我们首先检查查询结果中是否有 `CreatedAt` 字段,如果有,则将时间戳转换为格式化的字符串,并将其设置回记录中。 这样,当我们从数据库查询 `User` 记录时,`CreatedAt` 字段将会自动转换成 `yyyy-mm-dd HH:ii:ss` 格式。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzxOnlineOk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值