मैं MySQL डेटाबेस में यूनिक्स टाइमस्टैम्प के रूप में समय संग्रहीत कर रहा हूं और यह कुछ जावास्क्रिप्ट कोड को भेजा जाता है। मुझे इससे केवल समय कैसे मिलेगा?
उदाहरण के लिए, एचएच / एमएम / एसएस प्रारूप में।
मैं MySQL डेटाबेस में यूनिक्स टाइमस्टैम्प के रूप में समय संग्रहीत कर रहा हूं और यह कुछ जावास्क्रिप्ट कोड को भेजा जाता है। मुझे इससे केवल समय कैसे मिलेगा?
उदाहरण के लिए, एचएच / एमएम / एसएस प्रारूप में।
जवाबों:
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);
दिनांक ऑब्जेक्ट के बारे में अधिक जानकारी के लिए, कृपया MDN या ECMAScript 5 विनिर्देशन देखें ।
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 और 11 के बीच एक महीने की संख्या देता है, इस प्रकार a.getMonth() - 1
गलत है।
जावास्क्रिप्ट मिलीसेकंड में काम करता है, इसलिए आपको सबसे पहले UNIX टाइमस्टैम्प को सेकंड से मिलीसेकंड में बदलना होगा।
var date = new Date(UNIX_Timestamp * 1000);
// Manipulate JavaScript Date object here...
मैं जैकब राइट की Date.format()
लाइब्रेरी के लिए आंशिक हूं , जो PHP के date()
फ़ंक्शन की शैली में जावास्क्रिप्ट तिथि को प्रारूपित करता है।
new Date(unix_timestamp * 1000).format('h:i:s')
format is not a function
। लेकिन यह जाहिरा तौर पर काम करता है: stackoverflow.com/a/34015511/7550772
उपयोग:
var s = new Date(1504095567183).toLocaleDateString("en-US")
console.log(s)
// expected output "8/30/2017"
और समय के लिए:
var s = new Date(1504095567183).toLocaleTimeString("en-US")
console.log(s)
// expected output "3:19:27 PM"
toLocaleString
तिथि और समय दोनों शामिल हैं।
यहाँ सेकंड के रूप में प्रारूपित करने के लिए सबसे छोटा एक लाइनर समाधान है 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"
विधि
Date.prototype.toISOString()
विस्तारित विस्तारित आईएसओ 8601 प्रारूप में समय देता है , जो हमेशा 24 या 27 वर्ण लंबा ( क्रमशःYYYY-MM-DDTHH:mm:ss.sssZ
या±YYYYYY-MM-DDTHH:mm:ss.sssZ
क्रमशः) होता है। समयक्षेत्र हमेशा शून्य यूटीसी ऑफसेट होता है।
एनबी: इस समाधान के लिए किसी तीसरे पक्ष के पुस्तकालयों की आवश्यकता नहीं है और सभी आधुनिक ब्राउज़रों और जावास्क्रिप्ट इंजनों में समर्थित है।
toTimeString
समय क्षेत्र के साथ अच्छा काम नहीं कर रहा था। दुर्भाग्य से आपका संपादन इससे पहले अस्वीकार कर दिया गया था जब मैंने इसे देखा था। हालाँकि, मैं toISOString
इसके बजाय उपयोग करने का सुझाव toGMTString
दूंगा , क्योंकि यह पदावनत है और विभिन्न प्लेटफार्मों पर अलग-अलग परिणाम दे सकता है।
मैं एक पुस्तकालय का उपयोग करने के बारे में सोचता हूँ जैसे क्षणिका.कॉम , जो इसे वास्तव में सरल बनाता है:
यूनिक्स टाइमस्टैम्प पर आधारित:
var timestamp = moment.unix(1293683278);
console.log( timestamp.format("HH/mm/ss") );
MySQL दिनांक स्ट्रिंग के आधार पर:
var now = moment("2010-10-10 12:03:15");
console.log( now.format("HH/mm/ss") );
console.log
उदाहरणों में, मैं प्रारूप के कारण उलझन में था /
, लेकिन इससे मुझे बहुत मदद मिली।
1 जनवरी 1970 ( विकिपीडिया के अनुसार ) पर 00:00:00 UTC के बाद से UNIX टाइमस्टैम्प सेकंड की संख्या है ।
जावास्क्रिप्ट में दिनांक वस्तु का तर्क 1 जनवरी, 1970 को 00:00:00 यूटीसी के बाद से मील के पत्थर की संख्या है ( W3Schools जावास्क्रिप्ट दस्तावेज़ के अनुसार )।
उदाहरण के लिए नीचे कोड देखें:
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);
देता है:
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)
hh: mm: ss: variant: के रूप में सेकंड के लिए सबसे छोटा एक-लाइनर समाधान
console.log(new Date(1549312452 * 1000).toISOString().slice(0, 19).replace('T', ' '));
// "2019-02-04 20:34:12"
Moment.js का उपयोग करके , आप इस तरह समय और दिनांक प्राप्त कर सकते हैं:
var dateTimeString = moment(1439198499).format("DD-MM-YYYY HH:mm:ss");
और आप केवल इसका उपयोग करके समय प्राप्त कर सकते हैं:
var timeString = moment(1439198499).format("HH:mm:ss");
उपर्युक्त समाधानों के साथ समस्या यह है कि यदि घंटा, मिनट या सेकंड, केवल एक अंक (यानी 0-9) है, तो समय गलत होगा, जैसे यह 2: 3: 9 हो सकता है, लेकिन यह 02 होना चाहिए: 03:09।
इस पृष्ठ के अनुसार यह दिनांक के "toLocaleTimeString" विधि का उपयोग करने के लिए एक बेहतर समाधान प्रतीत होता है।
date.toLocaleTimeString()
toTimeString
विधि से नहीं होगा । यहाँ देखें: stackoverflow.com/a/35890537/1249581 ।
दूसरा तरीका - एक आईएसओ 8601 तारीख से।
var timestamp = 1293683278;
var date = new Date(timestamp * 1000);
var iso = date.toISOString().match(/(\d{2}:\d{2}:\d{2})/)
alert(iso[1]);
@ शोमरत के उत्तर के आधार पर, यहां एक स्निपेट है जो स्वचालित रूप से इस तरह से डेटाइम लिखता है (उत्तरों के लिए स्टैकऑवरफ्लो की तारीख के समान है:) answered Nov 6 '16 at 11:51
:
today, 11:23
या
yersterday, 11:23
या (यदि आज के मुकाबले अलग लेकिन एक ही वर्ष)
6 Nov, 11:23
या (यदि आज की तुलना में एक और वर्ष)
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 लाइब्रेरी की आवश्यकता नहीं है:
Intl.DateTimeFormat डेट / टाइम फॉर्मेट करने का गैर-सांस्कृतिक रूप से साम्राज्यवादी तरीका है।
// 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 ) ) );
मेरे टाइमस्टैम्प को PHP बैकएंड से लाया जा रहा है। मैंने ऊपर दिए गए सभी तरीकों की कोशिश की और यह काम नहीं किया। मैं तब एक ट्यूटोरियल में काम कर रहा था:
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());
ऊपर दिए गए तरीके इस परिणाम को उत्पन्न करेंगे
1541415288860
Mon Nov 05 2018
2018
54
48
13
1:54:48 PM
वहाँ तरीकों का एक गुच्छा है जो टाइमस्टैम्प के साथ पूरी तरह से काम करता है। खिचड़ी भाषा उन सभी को सूचीबद्ध करती है
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
कुछ उत्तरों के साथ शून्य समस्या पर ध्यान दें। उदाहरण के लिए, टाइमस्टैम्प 1439329773
को गलती से बदल दिया जाएगा 12/08/2015 0:49
।
मैं इस समस्या को दूर करने के लिए निम्नलिखित का उपयोग करने पर सुझाव दूंगा:
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);
अब में परिणाम:
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());
तिथि / युग परिवर्तक देखें ।
आप की जरूरत है ParseInt
, अन्यथा यह काम नहीं करेगा:
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;
अपने टाइमस्टैम्प को HH:MM:SS
प्रारूप में बदलने के लिए आप निम्न फ़ंक्शन का उपयोग कर सकते हैं :
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 : ':' );
}
विभाजक को पारित किए बिना, यह :
(डिफ़ॉल्ट) विभाजक के रूप में उपयोग करता है :
time = convertTime(1061351153); // --> OUTPUT = 05:45:53
यदि आप /
एक विभाजक के रूप में उपयोग करना चाहते हैं , तो बस इसे दूसरे पैरामीटर के रूप में पास करें:
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>';
इस फिडल को भी देखें ।
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
यदि आप यूनिक्स समय अवधि को वास्तविक घंटे, मिनट और सेकंड में परिवर्तित करना चाहते हैं, तो आप निम्नलिखित कोड का उपयोग कर सकते हैं:
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
नीचे कोड भी 3-अंकीय मिलीसेक प्रदान करता है, कंसोल लॉग उपसर्गों के लिए आदर्श:
const timeStrGet = date => {
const milliSecsStr = date.getMilliseconds().toString().padStart(3, '0') ;
return `${date.toLocaleTimeString('it-US')}.${milliSecsStr}`;
};
setInterval(() => console.log(timeStrGet(new Date())), 299);
js में टाइमस्टैम्प को डेट स्ट्रिंग में परिवर्तित करें
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
@ एरन द्वारा दिया गया जवाब काम करता है, लेकिन यह मेरे लिए काम नहीं करता था क्योंकि मैं टाइमस्टैम्प को 1980 से शुरू करने की कोशिश कर रहा था। इसलिए मैंने कुछ बदलाव किए हैं
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);
इसलिए यदि आपके पास एक और दशक से शुरू होने वाला टाइमस्टैम्प है, तो बस इसका उपयोग करें। इसने मेरे लिए बहुत सारे सिरदर्द को बचा लिया।