Bir Unix zaman damgası olarak MySQL veritabanında zaman saklıyorum ve bazı JavaScript koduna gönderilir. Bundan sadece zamanı nasıl çıkarabilirim?
Örneğin, SS / DD / SS biçiminde.
Bir Unix zaman damgası olarak MySQL veritabanında zaman saklıyorum ve bazı JavaScript koduna gönderilir. Bundan sadece zamanı nasıl çıkarabilirim?
Örneğin, SS / DD / SS biçiminde.
Yanıtlar:
let unix_timestamp = 1549312452
// Create a new JavaScript Date object based on the timestamp
// multiplied by 1000 so that the argument is in milliseconds, not seconds.
var date = new Date(unix_timestamp * 1000);
// Hours part from the timestamp
var hours = date.getHours();
// Minutes part from the timestamp
var minutes = "0" + date.getMinutes();
// Seconds part from the timestamp
var seconds = "0" + date.getSeconds();
// Will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);
console.log(formattedTime);
Date nesnesi hakkında daha fazla bilgi için lütfen MDN veya ECMAScript 5 spesifikasyonuna bakın .
function timeConverter(UNIX_timestamp){
var a = new Date(UNIX_timestamp * 1000);
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var year = a.getFullYear();
var month = months[a.getMonth()];
var date = a.getDate();
var hour = a.getHours();
var min = a.getMinutes();
var sec = a.getSeconds();
var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
return time;
}
console.log(timeConverter(0));
var min = a.getMinutes() < 10 ? '0' + a.getMinutes() : a.getMinutes(); var sec = a.getSeconds() < 10 ? '0' + a.getSeconds() : a.getSeconds();
getMonth()
0 ile 11 arasında bir ay sayısı döndürür, bu nedenle a.getMonth() - 1
yanlıştır.
JavaScript milisaniye olarak çalışır, bu nedenle önce UNIX zaman damgasını saniyelerden milisaniyeye dönüştürmeniz gerekir.
var date = new Date(UNIX_Timestamp * 1000);
// Manipulate JavaScript Date object here...
Date.format()
PHP'nin date()
işlev biçiminde JavaScript tarih biçimlendirmesini uygulayan Jacob Wright'ın kütüphanesinin bir kısmıyım .
new Date(unix_timestamp * 1000).format('h:i:s')
format is not a function
. Ancak bu görünüşe göre çalışıyor: stackoverflow.com/a/34015511/7550772
kullanın:
var s = new Date(1504095567183).toLocaleDateString("en-US")
console.log(s)
// expected output "8/30/2017"
ve zaman için:
var s = new Date(1504095567183).toLocaleTimeString("en-US")
console.log(s)
// expected output "3:19:27 PM"
toLocaleString
, hem tarih hem de saat içerir.
Saniyeleri şu şekilde biçimlendirmek için en kısa tek katmanlı çözüm hh:mm:ss
:
/**
* Convert seconds to time string (hh:mm:ss).
*
* @param Number s
*
* @return String
*/
function time(s) {
return new Date(s * 1e3).toISOString().slice(-13, -5);
}
console.log( time(12345) ); // "03:25:45"
Yöntem
Date.prototype.toISOString()
, zamanı her zaman 24 veya 27 karakter uzunluğunda (yani veya sırasıyla) basitleştirilmiş genişletilmiş ISO 8601 biçiminde döndürür . Saat dilimi her zaman sıfır UTC ofsetidir.YYYY-MM-DDTHH:mm:ss.sssZ
±YYYYYY-MM-DDTHH:mm:ss.sssZ
Not: Bu çözüm herhangi bir üçüncü taraf kitaplığı gerektirmez ve tüm modern tarayıcılarda ve JavaScript motorlarında desteklenir.
toTimeString
saat dilimleri ile iyi çalışmıyordun. Maalesef düzenlemeniz ben görmeden reddedildi. Ancak, kullanımdan kaldırıldığı ve farklı platformlarda farklı sonuçlar döndüğü için toISOString
bunun yerine kullanılmasını öneririm toGMTString
.
Momentjs.com gibi bir kütüphane kullanmayı düşünürdüm , bu gerçekten basittir:
Unix zaman damgasını temel alan:
var timestamp = moment.unix(1293683278);
console.log( timestamp.format("HH/mm/ss") );
MySQL tarih dizesine dayanarak:
var now = moment("2010-10-10 12:03:15");
console.log( now.format("HH/mm/ss") );
console.log
örnekler, ben nedeniyle biçimi hakkında karıştı /
ama bana çok yardımcı oldu.
UNIX zaman damgası, 1 Ocak 1970 tarihinde 00:00:00 UTC saatinden bu yana geçen saniye sayısıdır ( Wikipedia'ya göre) ).
Javascript'teki Date nesnesinin bağımsız değişkeni, 1 Ocak 1970 UTC saatinden bu yana geçen milisaniye sayısıdır ( W3Schools Javascript belgelerine göre) ).
Örneğin aşağıdaki koda bakın:
function tm(unix_tm) {
var dt = new Date(unix_tm*1000);
document.writeln(dt.getHours() + '/' + dt.getMinutes() + '/' + dt.getSeconds() + ' -- ' + dt + '<br>');
}
tm(60);
tm(86400);
verir:
1/1/0 -- Thu Jan 01 1970 01:01:00 GMT+0100 (Central European Standard Time)
1/0/0 -- Fri Jan 02 1970 01:00:00 GMT+0100 (Central European Standard Time)
ss: dd: ss: varyant olarak saniyeleri biçimlendirmek için en kısa tek katmanlı çözüm
console.log(new Date(1549312452 * 1000).toISOString().slice(0, 19).replace('T', ' '));
// "2019-02-04 20:34:12"
Moment.js'yi kullanarak şu şekilde tarih ve saat alabilirsiniz:
var dateTimeString = moment(1439198499).format("DD-MM-YYYY HH:mm:ss");
Ve bunu kullanarak sadece zaman kazanabilirsiniz:
var timeString = moment(1439198499).format("HH:mm:ss");
Yukarıda belirtilen çözümlerle ilgili sorun, saat, dakika veya saniye, yalnızca bir basamak (yani 0-9) olduğunda, zamanın yanlış olacağı, örneğin 2: 3: 9 olabilir, ancak 02 olması gerekir: 03:09.
Bu sayfaya göre Date'nin "toLocaleTimeString" yöntemini kullanmak daha iyi bir çözüm gibi görünüyor.
date.toLocaleTimeString()
toTimeString
yöntemle olmayacak . Buradan kontrol edin: stackoverflow.com/a/35890537/1249581 .
Başka bir yol - ISO 8601 tarihinden itibaren.
var timestamp = 1293683278;
var date = new Date(timestamp * 1000);
var iso = date.toISOString().match(/(\d{2}:\d{2}:\d{2})/)
alert(iso[1]);
@ Shomrat'ın cevabına dayanarak, tarih saatini otomatik olarak bu şekilde yazan bir snippet (StackOverflow'un cevapların tarihine biraz benzer:) answered Nov 6 '16 at 11:51
:
today, 11:23
veya
yersterday, 11:23
veya (farklı ama bugünden aynı yıl ise)
6 Nov, 11:23
veya (bugünden bir yıl sonra)
6 Nov 2016, 11:23
function timeConverter(t) {
var a = new Date(t * 1000);
var today = new Date();
var yesterday = new Date(Date.now() - 86400000);
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
var year = a.getFullYear();
var month = months[a.getMonth()];
var date = a.getDate();
var hour = a.getHours();
var min = a.getMinutes();
if (a.setHours(0,0,0,0) == today.setHours(0,0,0,0))
return 'today, ' + hour + ':' + min;
else if (a.setHours(0,0,0,0) == yesterday.setHours(0,0,0,0))
return 'yesterday, ' + hour + ':' + min;
else if (year == today.getFullYear())
return date + ' ' + month + ', ' + hour + ':' + min;
else
return date + ' ' + month + ' ' + year + ', ' + hour + ':' + min;
}
40 KB kitaplığa ihtiyaç duymayan modern çözüm:
Intl.DateTimeFormat , bir tarihi / saati biçimlendirmenin kültürel olarak emperyalist olmayan yoludur.
// Setup once
var options = {
//weekday: 'long',
//month: 'short',
//year: 'numeric',
//day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
},
intlDate = new Intl.DateTimeFormat( undefined, options );
// Reusable formatter
var timeStamp = 1412743273;
console.log( intlDate.format( new Date( 1000 * timeStamp ) ) );
Zaman damgam bir PHP arka ucundan getiriliyor. Yukarıdaki tüm yöntemleri denedim ve işe yaramadı. Daha sonra çalışan bir öğretici ile karşılaştım:
var d =val.timestamp;
var date=new Date(+d); //NB: use + before variable name
console.log(d);
console.log(date.toDateString());
console.log(date.getFullYear());
console.log(date.getMinutes());
console.log(date.getSeconds());
console.log(date.getHours());
console.log(date.toLocaleTimeString());
yukarıdaki yöntemler bu sonuçları üretecektir
1541415288860
Mon Nov 05 2018
2018
54
48
13
1:54:48 PM
Zaman damgalarıyla mükemmel çalışan bir sürü yöntem var. Hepsini listeleyemiyorum
function getTIMESTAMP() {
var date = new Date();
var year = date.getFullYear();
var month = ("0" + (date.getMonth() + 1)).substr(-2);
var day = ("0" + date.getDate()).substr(-2);
var hour = ("0" + date.getHours()).substr(-2);
var minutes = ("0" + date.getMinutes()).substr(-2);
var seconds = ("0" + date.getSeconds()).substr(-2);
return year + "-" + month + "-" + day + " " + hour + ":" + minutes + ":" + seconds;
}
//2016-01-14 02:40:01
Bazı cevaplarda sıfır soruna dikkat edin. Örneğin, zaman damgası 1439329773
yanlışlıkla12/08/2015 0:49
.
Bu sorunun üstesinden gelmek için aşağıdakileri kullanmanızı öneririm:
var timestamp = 1439329773; // replace your timestamp
var date = new Date(timestamp * 1000);
var formattedDate = ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2);
console.log(formattedDate);
Şimdi sonuçları:
12/08/2015 00:49
// Format value as two digits 0 => 00, 1 => 01
function twoDigits(value) {
if(value < 10) {
return '0' + value;
}
return value;
}
var date = new Date(unix_timestamp*1000);
// display in format HH:MM:SS
var formattedTime = twoDigits(date.getHours())
+ ':' + twoDigits(date.getMinutes())
+ ':' + twoDigits(date.getSeconds());
Tarih / Dönem Dönüştürücüsüne Bakın .
Yapmanız gerekir ParseInt
, aksi takdirde işe yaramaz:
if (!window.a)
window.a = new Date();
var mEpoch = parseInt(UNIX_timestamp);
if (mEpoch < 10000000000)
mEpoch *= 1000;
------
a.setTime(mEpoch);
var year = a.getFullYear();
...
return time;
Zaman damganızı HH:MM:SS
formata dönüştürmek için aşağıdaki işlevi kullanabilirsiniz :
var convertTime = function(timestamp, separator) {
var pad = function(input) {return input < 10 ? "0" + input : input;};
var date = timestamp ? new Date(timestamp * 1000) : new Date();
return [
pad(date.getHours()),
pad(date.getMinutes()),
pad(date.getSeconds())
].join(typeof separator !== 'undefined' ? separator : ':' );
}
Bir ayırıcıyı geçmeden :
, (varsayılan) ayırıcı olarak kullanır :
time = convertTime(1061351153); // --> OUTPUT = 05:45:53
/
Ayırıcı olarak kullanmak istiyorsanız , ikinci parametre olarak iletmeniz yeterlidir:
time = convertTime(920535115, '/'); // --> OUTPUT = 09/11/55
var convertTime = function(timestamp, separator) {
var pad = function(input) {return input < 10 ? "0" + input : input;};
var date = timestamp ? new Date(timestamp * 1000) : new Date();
return [
pad(date.getHours()),
pad(date.getMinutes()),
pad(date.getSeconds())
].join(typeof separator !== 'undefined' ? separator : ':' );
}
document.body.innerHTML = '<pre>' + JSON.stringify({
920535115 : convertTime(920535115, '/'),
1061351153 : convertTime(1061351153, ':'),
1435651350 : convertTime(1435651350, '-'),
1487938926 : convertTime(1487938926),
1555135551 : convertTime(1555135551, '.')
}, null, '\t') + '</pre>';
Ayrıca bkz bu Fiddle .
function getDateTimeFromTimestamp(unixTimeStamp) {
var date = new Date(unixTimeStamp);
return ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2);
}
var myTime = getDateTimeFromTimestamp(1435986900000);
console.log(myTime); // output 01/05/2000 11:00
Unix zaman süresini gerçek saatlere, dakikalara ve saniyelere dönüştürmek istiyorsanız, aşağıdaki kodu kullanabilirsiniz:
var hours = Math.floor(timestamp / 60 / 60);
var minutes = Math.floor((timestamp - hours * 60 * 60) / 60);
var seconds = Math.floor(timestamp - hours * 60 * 60 - minutes * 60 );
var duration = hours + ':' + minutes + ':' + seconds;
function getDateTime(unixTimeStamp) {
var d = new Date(unixTimeStamp);
var h = (d.getHours().toString().length == 1) ? ('0' + d.getHours()) : d.getHours();
var m = (d.getMinutes().toString().length == 1) ? ('0' + d.getMinutes()) : d.getMinutes();
var s = (d.getSeconds().toString().length == 1) ? ('0' + d.getSeconds()) : d.getSeconds();
var time = h + '/' + m + '/' + s;
return time;
}
var myTime = getDateTime(1435986900000);
console.log(myTime); // output 01/15/00
Aşağıdaki kod ayrıca konsol günlüğü önekleri için ideal olan 3 basamaklı milisaniyeler sağlar:
const timeStrGet = date => {
const milliSecsStr = date.getMilliseconds().toString().padStart(3, '0') ;
return `${date.toLocaleTimeString('it-US')}.${milliSecsStr}`;
};
setInterval(() => console.log(timeStrGet(new Date())), 299);
zaman damgalarını js'deki tarih dizesine dönüştür
moment().format('YYYY-MM-DD hh:mm:ss');
// "2020-01-10 11:55:43"
moment(1578478211000).format('YYYY-MM-DD hh:mm:ss');
// "2020-01-08 06:10:11"
day.js
github.com/iamkun/dayjs
@Aron tarafından verilen cevap işe yarıyor, ancak 1980'den itibaren zaman damgasını dönüştürmeye çalıştığım için benim için işe yaramadı. Bu yüzden aşağıdaki gibi birkaç değişiklik yaptım
function ConvertUnixTimeToDateForLeap(UNIX_Timestamp) {
var dateObj = new Date(1980, 0, 1, 0, 0, 0, 0);
dateObj.setSeconds(dateObj.getSeconds() + UNIX_Timestamp);
return dateObj;
}
document.body.innerHTML = 'TimeStamp : ' + ConvertUnixTimeToDateForLeap(1269700200);
Bu yüzden, başka bir on yıldan itibaren başlayan bir zaman damganız varsa, bunu kullanın. Benim için başım ağrıyor.