[英]Javascript convert seconds to a date object
如何将秒数转换为 javascript 中的日期时间对象。
例子:
1.3308313703571
1.6324722385401
这是来自一系列的点和它们发生的时间。 我理解 1.23323 比秒多,但我无法更改该值,因为它是从 api 中提取的。
你可以这样试试:
function toDateTime(secs) {
var t = new Date(1970, 0, 1); // Epoch
t.setSeconds(secs);
return t;
}
有关纪元日期的信息。
您可以将 unix 时间戳毫秒作为参数传递给Date构造函数:
var secs = 30;
new Date(secs * 1000);
输出:
Date 1970-01-01T00:00:30.000Z
@UVM 的回答很有帮助,但如果您正在处理时区(即 UTC 与本地时间),则有点不完整。 对于时区,使用 Date.UTC 和 Date.setUTCSeconds 从 UTC 开始以获得真正的 UTC 日期和时间。
function toDateTime(secs) {
var t = new Date(Date.UTC(1970, 0, 1)); // Epoch
t.setUTCSeconds(secs);
return t;
}
然后,您可以使用像 Moment 这样的库将其转换/格式化为本地时区。
这个问题似乎已经得到了回答,但这可能对那些试图做类似于 ruby 的 Time.at() 方法的人有所帮助。
function formatDateTime(input){
var epoch = new Date(0);
epoch.setSeconds(parseInt(input));
var date = epoch.toISOString();
date = date.replace('T', ' ');
return date.split('.')[0].split(' ')[0] + ' ' + epoch.toLocaleTimeString().split(' ')[0];
};
您的示例值有一个小数.. 看起来您正在尝试将 1.something 秒转换为日期..
同时在此处查看此示例以了解正确的秒数到日期转换。您可以查看他们的 js 源代码。
我不知道 10 年前是怎么回事,但现在它可以解决接下来的问题:
let sec = 1628618888939
let time = new Date(sec)
let normalDate = new Date(sec).toLocaleString('en-GB',{timeZone:'UTC'})
time: "Tue Aug 10 2021 21:08:08 GMT+0300 (Eastern European Summer Time)"
normalDate: "10/08/2021, 18:08:08"
如果将来你会遇到这样的问题,我可以建议阅读与你的问题相关的功能,然后解决方案就会出现。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString
/**
DateTime
-------
Author: Jamal BOUIZEM
Date: 20/02/2015
Version: 1.0.0
*/
var DateTime = (function(){
return {
instance: function(spec){
var that = {
h: spec.h || 0,
m: spec.m || 0,
s: spec.s || 0
};
var d = new Date();
var str = "";
function __init__(h, m, s)
{
that.h = h;
that.m = m;
that.s = s;
d.setHours(that.h);
d.setMinutes(that.m);
d.setSeconds(that.s);
};
that.get = function(){
d.setHours(that.h);
d.setMinutes(that.m);
d.setSeconds(that.s);
return d;
};
that.set = function(h, m, s){
__init__(h, m, s);
};
that.convertSecs = function(){
return (that.h * 3600) + (that.m * 60) + that.s;
};
that.secsToDate = function(seconds){
var ts = seconds % 60;
var tm = (seconds / 60) % 60;
var th = (seconds / 3600) % 60;
return DateTime.instance({ h: parseInt(th), m: parseInt(tm), s: parseInt(ts) });
};
that.add = function(d){
return that.secsToDate(that.convertSecs() + d.convertSecs());
};
that.subtract = function(d){
return that.secsToDate(that.convertSecs() - d.convertSecs());
};
__init__(that.h, that.m, that.s);
return that;
}
}
})();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.