时间与时间戳的转换

什么是时间戳?

  • 时间戳是指格林威治时间自1970年1月1日(00:00:00 GTM)至当前时间的总秒数。它也被称为Unix时间戳(Unix Timestamp)。
  • 时间戳是能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间

   1、将时间转换成时间戳

  •    
    var tempTime1 = Date.parse(new Date());
    //结果:1576585605000 毫秒级别的数值被转化为000
  • var tempTime2 = (new Data()).valueOf()

    // 结果:1576585605369通过valueOf()函数返回指定对象的原始值获得准确的时间戳值

  • var tempTime3 = new Date().getTime()

    //结果:1576585605369 通过原型方法直接获得当前的毫秒值,准确

  • var tempTime4 = Number(new Date())

    //结果:1576585605369,将时间转化为一个number类型的数值,即时间戳

    2、时间戳转换成时间

  • var tempTime5 = new Date(1576585605369)

    //直接用 new Date(时间戳) 格式转化获得当前时间

  • 案例:JS前一天和后一天
  • HTML代码
  • <button onclick="goBefore()">前一天</button>
        <button onclick="goAfter()">后一天</button>
        <div id="app"></div>
    
        <script src="index.js"></script>

  • javaScript 代码:

    复制代码

    var date = new Date();
    
    var app = document.getElementById("app");
    app.innerHTML = myGetDate(date);
    
    //获取时间戳
    var time = date.getTime();//当前的毫秒数
    var oneDay = 1000*60*60*24;//一天的毫秒数
    
    
    //前一天
    function goBefore(){
        var before = time -= oneDay;//计算前一天的毫秒数
        date.setTime(before);
        app.innerHTML = myGetDate(date);
    }
    
    //后一天
    function goAfter(){
        var after = time += oneDay;//计算前一天的毫秒数
        date.setTime(after);
        app.innerHTML = myGetDate(date);
    }
    
    
    //封装日期格式化的方法
    function myGetDate(d){
        return `${d.getFullYear()}年${d.getMonth()+1}月${d.getDate()}日`;
    }

    复制代码

时间戳转时间封装

JS文件:

export function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null;
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}';
  let date;
  if (typeof time === 'object') {
    date = time;
  } else {
    if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
      time = parseInt(time);
    }
    if (typeof time === 'number' && time.toString().length === 10) {
      time = time * 1000;
    }
    date = new Date(time);
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  };
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key];
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') {
      return ['日', '一', '二', '三', '四', '五', '六'][value];
    }
    if (result.length > 0 && value < 10) {
      value = '0' + value;
    }
    return value || 0;
  });
  return time_str;
}

使用引入:

import { parseTime } from '.js文件路径'

使用方法:

this.setTime = parseTime(this.setTime,"{y}年{m}月{d}日 {h}:{i}:{s}")

原生Date格式(Thu Aug 20 2020 14:55:18 GMT+0800 (中国标准时间)),并转换成  2020-08-20 00:00:00 模式

export function protoTime(dataTime, protoFormat) {
    const dataProtoFormat = protoFormat || '{y}-{m}-{d} {h}:{i}:{s}';
    let date = dataTime
    const formatData = {
        y: date.getFullYear(),
        m: date.getMonth() + 1,
        d: date.getDate(),
        h: date.getHours(),
        i: date.getMinutes(),
        s: date.getSeconds(),
    };
    const freshData = dataProtoFormat.replace(/{(y|m|d|h|i|s)+}/g, (result, key) => {
        let value = formatData[key];
        if (result.length > 0 && value < 10) {
            value = '0' + value;
        }
        return value || 0;
    });
    return freshData;
}

根据当前的日期,获取最近一周的日期

getDataArea(currentTime) {
				var currentDate = new Date(currentTime)
				var timesStamp = currentDate.getTime();
				var currenDay = currentDate.getDay();
				var weeks = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"];
				var dates = [];
				for (var i = 0; i < 7; i++) {
					dates.push({
						date: new Date(timesStamp + 24 * 60 * 60 * 1000 * (i - (currenDay + 6) % 7))
							.toLocaleDateString().replace(/\//g, '-'),
						week: weeks[i]
					});
				}
				return dates
			}

结果:

 

  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: JavaScript 提供了一些内置的函数和对象可以方便地实现时间时间戳的相互转换。 要将时间戳转换时间,可以使用 JavaScript 的 Date 对象。例如: ``` // 将时间戳转换时间 var timestamp = 1615574400; var date = new Date(timestamp * 1000); // 使用 Date 对象的方法格式化时间 console.log(date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate()); // 2021-3-31 ``` 要将时间转换时间戳,可以使用 Date 对象的 `getTime()` 方法。例如: ``` // 将时间转换时间戳 var date = new Date("2022-12-17T00:00:00"); var timestamp = Math.floor(date.getTime() / 1000); console.log(timestamp); // 1675446400 ``` 注意,JavaScript时间戳是以毫秒为单位的,如果要将其转换为以秒为单位的时间戳,需要使用数学函数 `Math.floor()` 对时间戳进行取整。 另外,还可以使用 JavaScript 的 `toISOString()` 方法将时间转换为 ISO 格式的字符串,再使用正则表达式截取其中的时间戳。例如: ``` // 将时间转换为 ISO 格式的字符串 var date = new Date("2022-12-17T00:00:00"); var isoString = date.toISOString(); // 使用正则表达式截取时间戳 var timestamp = isoString.match(/\d{10}/g)[0]; console.log(timestamp); // 1675446400 ``` 希望这些信息能帮到你! ### 回答2: JavaScript中可以使用Date对象进行时间时间戳之间的转换。 1. 将时间转换时间戳: 要将一个特定的时间转换时间戳,可以使用Date对象的getTime()方法。该方法返回的是一个自1970年1月1日以来经过的毫秒数。例如,可以使用下面的代码将当前时间转换时间戳: ``` var timestamp = new Date().getTime(); ``` 2. 将时间戳转换时间: 要将一个时间戳转换时间,可以使用Date对象的构造函数,将时间戳作为参数传入。然后,可以使用该对象的各种方法(例如getFullYear()、getMonth()、getDate()等)来获取年、月、日、时、分、秒等信息。例如,可以使用下面的代码将一个时间戳转换时间: ``` var timestamp = 1609459200000; // 2021年1月1日的时间戳 var date = new Date(timestamp); console.log(date); ``` 以上代码将打印出:Fri Jan 01 2021 08:00:00 GMT+0800 (中国标准时间) 需要注意的是,JavaScript中的时间戳是以毫秒为单位的,而不是以秒为单位的。所以在进行时间戳转换时,需要确保使用正确的单位。 总结起来,通过Date对象的getTime()方法可以将时间转换时间戳,通过Date对象的构造函数可以将时间戳转换时间。 ### 回答3: JavaScript时间时间戳之间的相互转换非常简单。时间戳是指从1970年1月1日00:00:00格林威治标准时间(UTC)开始经过的毫秒数。而JavaScript的Date对象表示一个特定的日期和时间。 要将时间戳转换JavaScript的Date对象,可以使用Date的构造函数。例如,将时间戳1234567890转换为Date对象的代码如下: ```javascript var timestamp = 1234567890; var date = new Date(timestamp); ``` 这样就可以得到表示时间戳对应日期和时间的Date对象。 相反,要将JavaScript的Date对象转换时间戳,可以使用Date对象的getTime()方法。该方法返回自1970年1月1日00:00:00 UTC到指定日期和时间之间经过的毫秒数。例如,将Date对象转换时间戳的代码如下: ```javascript var date = new Date(); var timestamp = date.getTime(); ``` 这样就可以得到表示指定Date对象对应的时间戳。 总之,要在JavaScript中进行时间时间戳之间的转换,可以使用Date对象的构造函数将时间戳转换为Date对象,或者使用Date对象的getTime()方法将Date对象转换时间戳。这两种方法对于时间时间戳之间的转换非常方便。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值