Mengonversi milidetik ke tanggal (jQuery / JavaScript)

197

Saya sedikit rambler, tapi saya akan mencoba untuk menjaga ini tetap jelas -

Aku bosan, jadi aku mengerjakan "kotak shoutbox" , dan aku agak bingung tentang satu hal. Saya ingin mendapatkan waktu saat pesan dimasukkan, dan saya ingin memastikan saya mendapatkan waktu server, atau setidaknya memastikan saya tidak mendapatkan waktu setempat dari pengguna. Saya tahu itu tidak masalah, karena benda ini tidak akan digunakan oleh siapa pun selain saya, tetapi saya ingin teliti. Saya telah melihat-lihat dan menguji beberapa hal, dan saya pikir satu-satunya cara untuk melakukan ini adalah untuk mendapatkan milidetik sejak 1 Januari 1970 00:00:00 UTC , karena itu akan sama untuk semua orang.

Saya melakukan itu seperti ini:

var time = new Date();
var time = time.getTime();

Itu mengembalikan angka seperti 1294862756114.

Apakah ada cara untuk mengonversi 1294862756114ke tanggal yang lebih mudah dibaca, seperti DD/MM/YYYY HH:MM:SS?

Jadi, pada dasarnya, saya mencari date();fungsi JavaScript yang setara dengan PHP .

Andrew
sumber
4
jika Anda tidak ingin memiliki waktu lokal, lalu mengapa Anda menggunakan javascript untuk itu? tidakkah seharusnya Anda melakukannya di server?
fazo
1
Lihat perpustakaan ini -> datejs.com (Lihat toString ())
Ryan
@fazo - Ini lebih atau kurang proyek yang dimaksudkan untuk membantu saya menjadi lebih baik dengan JS, jadi saya mencoba menggunakan PHP sesedikit mungkin (semoga hanya untuk membaca / menulis data ke file).
Andrew
1
Saya pikir maksudnya dia ingin memformat string waktu yang sesuai?
Ryan
2
?/?/1970 or whatever it is-> Unix Epoch ,1970-01-01T00:00:00Z
Camilo Martin

Jawaban:

304

    var time = new Date().getTime();
    var date = new Date(time);
    alert(date.toString()); // Wed Jan 12 2011 12:42:46 GMT-0800 (PST)

Brian Donovan
sumber
1
Apakah ada keuntungan melakukannya dalam dua langkah? (Pertama menghitung waktu, lalu menggunakannya sebagai argumen untuk tanggal). Apakah Anda tidak mendapatkan hasil yang persis sama hanya dengan var date = Date baru (); ?
Per Quested Aronsson
11
OP adalah tentang mengubah dari sejumlah milidetik ke Dateobjek, yang dilakukan oleh baris kedua. Baris pertama hanyalah cara untuk mendapatkan jumlah milidetik yang masuk akal. Anda juga bisa melakukannya var date = new Date(0);.
Brian Donovan
2
Waktu harus Bilangan, bukan String
Nicolas S.Xu
152

Jika Anda ingin memformat kustom untuk kencan Anda, saya menawarkan fungsi sederhana untuk itu:

var now = new Date;
console.log( now.customFormat( "#DD#/#MM#/#YYYY# #hh#:#mm#:#ss#" ) );

Berikut adalah token yang didukung:

token:     description:             example:
#YYYY#     4-digit year             1999
#YY#       2-digit year             99
#MMMM#     full month name          February
#MMM#      3-letter month name      Feb
#MM#       2-digit month number     02
#M#        month number             2
#DDDD#     full weekday name        Wednesday
#DDD#      3-letter weekday name    Wed
#DD#       2-digit day number       09
#D#        day number               9
#th#       day ordinal suffix       nd
#hhhh#     2-digit 24-based hour    17
#hhh#      military/24-based hour   17
#hh#       2-digit hour             05
#h#        hour                     5
#mm#       2-digit minute           07
#m#        minute                   7
#ss#       2-digit second           09
#s#        second                   9
#ampm#     "am" or "pm"             pm
#AMPM#     "AM" or "PM"             PM

Dan inilah kodenya:

//*** This code is copyright 2002-2016 by Gavin Kistner, [email protected]
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
Date.prototype.customFormat = function(formatString){
  var YYYY,YY,MMMM,MMM,MM,M,DDDD,DDD,DD,D,hhhh,hhh,hh,h,mm,m,ss,s,ampm,AMPM,dMod,th;
  YY = ((YYYY=this.getFullYear())+"").slice(-2);
  MM = (M=this.getMonth()+1)<10?('0'+M):M;
  MMM = (MMMM=["January","February","March","April","May","June","July","August","September","October","November","December"][M-1]).substring(0,3);
  DD = (D=this.getDate())<10?('0'+D):D;
  DDD = (DDDD=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][this.getDay()]).substring(0,3);
  th=(D>=10&&D<=20)?'th':((dMod=D%10)==1)?'st':(dMod==2)?'nd':(dMod==3)?'rd':'th';
  formatString = formatString.replace("#YYYY#",YYYY).replace("#YY#",YY).replace("#MMMM#",MMMM).replace("#MMM#",MMM).replace("#MM#",MM).replace("#M#",M).replace("#DDDD#",DDDD).replace("#DDD#",DDD).replace("#DD#",DD).replace("#D#",D).replace("#th#",th);
  h=(hhh=this.getHours());
  if (h==0) h=24;
  if (h>12) h-=12;
  hh = h<10?('0'+h):h;
  hhhh = hhh<10?('0'+hhh):hhh;
  AMPM=(ampm=hhh<12?'am':'pm').toUpperCase();
  mm=(m=this.getMinutes())<10?('0'+m):m;
  ss=(s=this.getSeconds())<10?('0'+s):s;
  return formatString.replace("#hhhh#",hhhh).replace("#hhh#",hhh).replace("#hh#",hh).replace("#h#",h).replace("#mm#",mm).replace("#m#",m).replace("#ss#",ss).replace("#s#",s).replace("#ampm#",ampm).replace("#AMPM#",AMPM);
};
Phrogz
sumber
37

Anda dapat dengan mudah menggunakan kami perpustakaan Datejs untuk mengonversi tanggal ke format yang Anda inginkan.

Saya sudah menjalankan pasangan tes dan berhasil.

Di bawah ini cuplikan yang menggambarkan bagaimana Anda dapat mencapai itu:

var d = new Date(1469433907836);

d.toLocaleString(); // expected output: "7/25/2016, 1:35:07 PM"

d.toLocaleDateString(); // expected output: "7/25/2016"

d.toDateString();  // expected output: "Mon Jul 25 2016"

d.toTimeString(); // expected output: "13:35:07 GMT+0530 (India Standard Time)"

d.toLocaleTimeString(); // expected output: "1:35:07 PM"
Ravindra
sumber
4
Contoh-contoh itu tidak memerlukan Datejs, mereka adalah bagian dari JavaScript. Tetapi mereka bekerja dan benar-benar memuaskan jawabannya. Terima kasih!
Michael Elliott
19

Di bawah ini adalah cuplikan untuk memungkinkan Anda memformat tanggal ke hasil yang diinginkan:

var time = new Date();
var time = time.getTime();

var theyear = time.getFullYear();
var themonth = time.getMonth() + 1;
var thetoday = time.getDate();

document.write("The date is: ");
document.write(theyear + "/" + themonth + "/" + thetoday);
John K.
sumber
4
Anda tidak perlu semi-titik dua dalam JavaScript. Namun, praktik terbaik untuk menggunakannya. Terkadang, tanpa mereka, arti dari sebuah pernyataan dapat berubah (tidak dalam hal ini). Beberapa pengulas kode bersemangat mencintai mereka dan memperjuangkan kehadiran mereka. Untuk menjaga hal-hal sederhana, yang terbaik adalah selalu menggunakannya.
Phil
7

Coba gunakan kode ini:

var milisegundos = parseInt(data.replace("/Date(", "").replace(")/", ""));
var newDate = new Date(milisegundos).toLocaleDateString("en-UE");

Bersenang senang lah!

Kenlly Acosta
sumber
2

Coba yang ini :

var time = new Date().toJSON();
abhi
sumber
0
/Date(1383066000000)/

function convertDate(data) {
    var getdate = parseInt(data.replace("/Date(", "").replace(")/", ""));
    var ConvDate= new Date(getdate);
    return ConvDate.getDate() + "/" + ConvDate.getMonth() + "/" + ConvDate.getFullYear();
}
Joh
sumber
3
Coba jelaskan mengapa jawaban ini menyelesaikan masalah tolong, hindari hanya memposting kode.
Ivan
0

Anggap tanggal sebagai tanggal milidetik 1526813885836, sehingga Anda dapat mengakses tanggal sebagai string dengan kode sampel ini:

console.log(new Date(1526813885836).toString());

Untuk kejelasan lihat kode di bawah ini:

const theTime = new Date(1526813885836);
console.log(theTime.toString());
Amerika
sumber
0

gunakan datejs

new Date().toString('yyyy-MM-d-h-mm-ss');
smenon
sumber
0

Satu kode baris.

var date = new Date(new Date().getTime());

atau

var date = new Date(1584120305684);
Ahmad Sharif
sumber