Stempel waktu ke format yang dapat dibaca manusia


89

Saya punya masalah aneh saat mengonversi dari unix timestamp ke representasi manusia menggunakan javascript

Berikut stempel waktunya

1301090400

Ini adalah javascript saya

var date = new Date(timestamp * 1000);
var year    = date.getFullYear();
var month   = date.getMonth();
var day     = date.getDay();
var hour    = date.getHours();
var minute  = date.getMinutes();
var seconds = date.getSeconds();  

Saya mengharapkan hasil menjadi 2011 2, 25 22 00 00. Tapi 2011, 2, 6, 0, 0, 0 Apa yang saya lewatkan?



Ini sama dengan apa yang saya lakukan
georgevich

Saya mencoba ini di konsol Firefox Firebug dan mendapatkan hasil yang diharapkan. Browser / OS mana yang Anda gunakan?
andrewmu

Saya membuat jsfiddle dan tampaknya berfungsi dengan baik: jsfiddle.net/9SUqX (saya uji di Opera)
James Hulse

Jawaban:


101

getDay()mengembalikan hari dalam seminggu. Untuk mendapatkan tanggal, gunakan date.getDate(). getMonth()mengambil bulan, tetapi bulan berbasis nol, jadi menggunakan getMonth()+1akan memberi Anda bulan yang tepat. Nilai waktu tampaknya baik-baik saja di sini, meskipun di sini jam 23 (GMT + 1). Jika Anda menginginkan nilai universal, tambahkan UTCke metode (mis. date.getUTCFullYear(), date.getUTCHours())

var timestamp = 1301090400,
date = new Date(timestamp * 1000),
datevalues = [
   date.getFullYear(),
   date.getMonth()+1,
   date.getDate(),
   date.getHours(),
   date.getMinutes(),
   date.getSeconds(),
];
alert(datevalues); //=> [2011, 3, 25, 23, 0, 0]

1
Anda menyarankan bantuan dengan tanggal, tetapi saya masih tidak tahu apa yang salah dengan jam, menit, dan detik
georgevich

7
@george Anda tidak melewatkan apa pun. Nilai tersebut adalah bilangan bulat, jadi tidak boleh memiliki nilai seperti "00". Anda dapat menambahkannya sendiri dengan mudah misalnyaminute = (minute < 10 ? "0" : "") + minute;
Shadow Wizard is Ear For You

@georgevich: di zona waktu apa Anda? Apa yang terjadi jika Anda menggunakan date.getUTCHours()?
KooiInc

1
GMT + 2 Hasil dari date.getUTCHours () adalah 19
georgevich

GMT + 2, jadi waktu universal 22 jam = 0 jam waktu Anda. Berikut adalah jsfiddle menggunakan nilai-nilai UTC: jsfiddle.net/EZFG9 .
KooiInc

48
var newDate = new Date();
newDate.setTime(unixtime*1000);
dateString = newDate.toUTCString();

Di mana unixtimewaktu yang dikembalikan oleh sql db Anda. Ini biola jika bisa membantu.

Misalnya, menggunakannya untuk waktu saat ini:

document.write( new Date().toUTCString() );


Saya menemukan jawaban ini, dan jawaban yang diterima di sini [* .toString ()] berguna: stackoverflow.com/questions/13622142/… Berikut intinya: gist.github.com/victoriastuart/b9fb09b890ef88755538b24b0207fece
Victoria Stuart

1
"unixtime is undefined"adalah apa yang saya dapatkan di sini
Katie

1
Bagaimanapun, ini dapat dengan mudah diaktifkan di onelinernew Date(1480966325 * 1000).toUTCString()
Rozkalns

9

berikut adalah jawaban kooilnc w / padded 0

function getFormattedDate() {
    var date = new Date();

    var month = date.getMonth() + 1;
    var day = date.getDate();
    var hour = date.getHours();
    var min = date.getMinutes();
    var sec = date.getSeconds();

    month = (month < 10 ? "0" : "") + month;
    day = (day < 10 ? "0" : "") + day;
    hour = (hour < 10 ? "0" : "") + hour;
    min = (min < 10 ? "0" : "") + min;
    sec = (sec < 10 ? "0" : "") + sec;

    var str = date.getFullYear() + "-" + month + "-" + day + "_" +  hour + ":" + min + ":" + sec;

    /*alert(str);*/

    return str;
}

7

Jam, menit, dan detik tergantung pada zona waktu sistem operasi Anda. Di GMT (UST) itu 22:00:00 tetapi di zona waktu yang berbeda bisa apa saja. Jadi tambahkan perbedaan zona waktu ke waktu untuk membuat tanggal GMT:

var d = new Date();
date = new Date(timestamp*1000 + d.getTimezoneOffset() * 60000)

Mengapa cap waktu dikalikan 1000?
Bruno Gomes

2
@BrunoGomes dia mengasumsikan stempel waktu dalam detik, sementara javascript melakukannya dalam milidetik.
Brent

7

gunakan Date.prototype.toLocaleTimeString()seperti yang didokumentasikan di sini

harap perhatikan contoh lokal en-US di url.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.