美文网首页
JS 时间戳与时间字符串转换

JS 时间戳与时间字符串转换

作者: 幻之国2012 | 来源:发表于2021-12-30 15:58 被阅读0次
时间戳 转换为 年月日 的字符串
/**
 * 时间戳转换为日期字符串方法
 * @param {*} timesStamp   // 时间戳
 * @param {*} datePattern  // 转换格式
 * @returns 
 */
function datesFormat(timesStamp, datePattern = '') {
  return (new Date(parseInt(timesStamp)).format(datePattern ? datePattern : 'YYYY-MM-DD hh:mm:ss'))
}

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+)/i.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
}

// 调用方法
const timesStamp = '1640850030000'
const dates = datesFormat(timesStamp, 'YYYY年MM月DD日 hh:mm:ss')
console.log(dates)  // 输出: 2021年12月30日 15:40:30

说明:

  1. 因为 M(月) 与 m(分钟) 表示不同意思, 所以 M & m 需要区分大小写
  2. Y(年) 做了大小写兼容, 可以使用 yyyy; D(日) 如果想用小写, 需要修改 "D+" ==改为=> "d+"
日期字符串 转换为 时间戳
const dates = '2021-12-30 15:40:30' 
// safari 浏览器需要转换格式为  '2021/12/30 15:40:30'
const timesStamp = new Date(dates).getTime()
console.log(timesStamp)    // 输出: 1640850030000

注意: 因为 safari 浏览器的兼容问题, 上面例子中的转换会出错, 需要改为这样的格式 '2021/12/30 15:40:30'

时间戳转化 ( 指定时区 )

场景:
例如有一个大型活动,报名时间是 北京时间【2022年4月24 10:00:00 - 14:00:00】,但是用户曾出差英国,电脑设置时区忘记改回中国时区,那么转化后的时间就是 【2022年4月24日 05:00:00 - 09:00:00】

// 解决方法, 在转化之前 对时间戳做计算处理

/** 区分时区的时间转换 
 * times: 需要转化的时间戳
 * type:   年月日格式
 * zone:  目标时区 (北京时间 东八区)
 */
export function UTCtimeToString(times, type = '', zone = -8) {
  // 格林威治子午线上的地方时 为 0;  以东为负  以西为正
  let targetTimezone = zone;
  let _dif = new Date().getTimezoneOffset();
  let _nowTime = times ? times : new Date().getTime();
  // 目标时区时间 = 本地时区时间 + 本地时区时差 - 目标时区时差
  let _result = _nowTime + _dif * 60 * 1000 - targetTimezone * 60 * 60 * 1000;

  // 调用时间戳转换方法
  return datesFormat(_result, type);  
}

//调用方法
const str = `中国北京时间: ${UTCtimeToString(1650765600000)} - ${UTCtimeToString(1650780000000, 'hh:mm:ss')}
// 输出内容:  中国北京时间: 2022年4月24  10:00:00 - 14:00:00

或者引用 Moment.js 库; 地址链接: http://momentjs.cn/

相关文章

  • 获取时间,时间与时间戳之间的转换

    一、JS获取当前时间,时间与时间戳之间的转换 获取当前时间 时间与时间戳之间的转换 将时间戳转换成日期格式 将日期...

  • js时间戳与字符串转换

    1.日期字符串转时间戳 2.时间戳转换时间 js日期时间格式化,可直接复制打包成js文件使用

  • Java 时间戳和时间的相互装换

    Java 时间戳和时间的相互装换 字符串时间转换为时间戳 时间戳转换为字符串时间

  • JS 时间戳与时间字符串转换

    时间戳 转换为 年月日 的字符串 说明:因为 M(月) 与 m(分钟) 表示不同意思, 所以 M & m 需要区分...

  • JavaScript处理日期时间

    JavaScipt 处理时间 基本的时间处理 获取当前时键戳 时间戳转换为字符串时间 字符串转换时间戳 推荐阅读:...

  • MySQL时--时间戳--字符串互相转换

    MySQL时--时间戳--字符串互相转换 时间转时间戳 时间戳转时间 时间转字符串 字符串转时间 字符串转时间戳 ...

  • web前端:JS处理时间

    原生JS 关于Date基础用法 计算指定两个时间之间的时间差 时间戳转换为 普通日期格式 时间格式字符串转为时间戳...

  • web前端: js处理时间

    原生JS 关于Date基础用法 计算指定两个时间之间的时间差 时间戳转换为 普通日期格式 时间格式字符串转为时间戳...

  • js转换时间戳

    可先将js字符串转换为date类型,再转换为时间戳类型。字符串格式为 yyyy-MM-dd HH:mm:ss或者...

  • Java 年月日和nuix时间戳的转换

    unix时间戳是秒级时间戳date需要毫秒级时间戳在配上格式化字符串与Calendar完成时间戳的转换 或者 第二...

网友评论

      本文标题:JS 时间戳与时间字符串转换

      本文链接:https://www.haomeiwen.com/subject/ytwiqrtx.html