Chuyển đổi mili giây thành một ngày (jQuery / JavaScript)


197

Tôi là một người lan man, nhưng tôi sẽ cố gắng làm rõ điều này -

Tôi đang buồn chán, vì vậy tôi đang làm việc trên một "shoutbox" , và tôi hơi bối rối về một điều. Tôi muốn nhận được thời gian gửi tin nhắn và tôi muốn chắc chắn rằng tôi đang nhận được thời gian của máy chủ hoặc ít nhất là đảm bảo rằng tôi không nhận được thời gian cục bộ của người dùng. Tôi biết điều đó không thành vấn đề, vì điều này sẽ không được sử dụng bởi bất cứ ai ngoài tôi, nhưng tôi muốn được kỹ lưỡng. Tôi đã nhìn xung quanh và thử nghiệm một vài điều, và tôi nghĩ cách duy nhất để làm điều này là lấy một phần nghìn giây kể từ ngày 1 tháng 1 năm 1970 00:00:00 UTC , vì điều đó sẽ giống nhau đối với mọi người.

Tôi đang làm như vậy:

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

Điều đó trả về một số như thế 1294862756114.

Có cách nào để chuyển đổi 1294862756114sang một ngày dễ đọc hơn DD/MM/YYYY HH:MM:SSkhông?

Vì vậy, về cơ bản, tôi đang tìm kiếm date();chức năng tương đương với JavaScript của JavaScript .


4
Nếu bạn không muốn có giờ địa phương, vậy tại sao bạn sử dụng javascript cho nó? bạn không nên làm điều đó tại máy chủ?
fazo

1
Hãy xem thư viện này -> datejs.com (Kiểm tra toString ())
Ryan

@fazo - Đây ít nhiều là một dự án nhằm giúp tôi trở nên tốt hơn với JS, vì vậy tôi đang cố gắng sử dụng PHP ít nhất có thể (hy vọng chỉ đọc / ghi dữ liệu vào tệp).
Andrew

1
Tôi nghĩ rằng anh ta có nghĩa là anh ta muốn định dạng chuỗi thời gian phù hợp?
Ryan

2
?/?/1970 or whatever it is-> Unix Epoch ,1970-01-01T00:00:00Z
Camilo Martin

Câu trả lời:


304

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


1
Có bất kỳ lợi thế làm điều đó trong hai bước? (Đầu tiên tính thời gian, sau đó sử dụng nó làm đối số cho ngày). Bạn không nhận được kết quả chính xác như vậy chỉ bằng var date = new Date (); ?
Per Quested Aronsson

11
OP đã chuyển đổi từ một số mili giây sang một Dateđối tượng, đó là những gì dòng thứ hai làm. Dòng đầu tiên chỉ là một cách để có được số mili giây hợp lý. Bạn cũng có thể làm var date = new Date(0);.
Brian Donovan

2
Thời gian phải là một Số, không phải là Chuỗi
Nicolas S.Xu

152

Nếu bạn muốn định dạng tùy chỉnh cho ngày của bạn, tôi cung cấp một chức năng đơn giản cho nó:

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

Dưới đây là các mã thông báo được hỗ trợ:

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

Và đây là mã:

//*** This code is copyright 2002-2016 by Gavin Kistner, !@phrogz.net
//*** 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);
};

37

Bạn có thể chỉ cần cho chúng tôi thư viện Datejs để chuyển đổi ngày thành định dạng bạn muốn.

Tôi đã chạy thử nghiệm vài lần và nó hoạt động.

Dưới đây là đoạn trích minh họa cách bạn có thể đạt được điều đó:

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"

4
Những ví dụ này không yêu cầu Datejs, chúng là một phần của JavaScript. Nhưng họ làm việc và hoàn toàn thỏa mãn câu trả lời. Cảm ơn!
Michael Elliott

19

Dưới đây là đoạn trích để cho phép bạn định dạng ngày thành đầu ra mong muốn:

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);

4
Bạn không cần dấu chấm phẩy trong JavaScript. Tuy nhiên, thực hành tốt nhất của nó để sử dụng chúng. Đôi khi, không có chúng, ý nghĩa của một tuyên bố có thể thay đổi (mặc dù không phải trong trường hợp này). Một số nhà phê bình mã rất yêu mến họ và đấu tranh cho sự hiện diện của họ. Để giữ cho mọi thứ đơn giản, tốt nhất là luôn luôn sử dụng chúng.
Phil


7

Hãy thử sử dụng mã này:

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

Hãy tận hưởng nó!


2

Hãy thử cái này:

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

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();
}

3
Hãy cố gắng giải thích tại sao câu trả lời này giải quyết vấn đề xin vui lòng, tránh chỉ đăng mã.
Ivan

0

Giả sử ngày là ngày mili giây 1526813885836, vì vậy bạn có thể truy cập ngày dưới dạng chuỗi với mã mẫu này:

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

Đối với clearness xem mã dưới đây:

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

0

sử dụng datejs

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

0

Mã một dòng.

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

hoặc là

var date = new Date(1584120305684);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.