javascript - एक यूनिक्स टाइमस्टैम्प को जावास्क्रिप्ट में समय के लिए परिवर्तित करें


मैं एक MySQL डाटाबेस में एक यूनिक्स टाइमस्टैम्प के रूप में समय संचित कर रहा हूं और इसे कुछ जावास्क्रिप्ट कोड पर भेज दिया जाता है। मैं इसे से बाहर समय कैसे मिल जाएगा?

उदाहरण के लिए, एचएच / एमएम / एसएस प्रारूप में


Answers



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

दिनांक वस्तु के संबंध में अधिक जानकारी के लिए, कृपया एमडीएन या ईसीएमएस्क्रिप्ट 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;
}



जावास्क्रिप्ट मिलीसेकंड्स में काम करता है, इसलिए आपको सबसे पहले यूनिक्स टाइमस्टैम्प को सेकंड से मिलीसेकेंड में कनवर्ट करना होगा।

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



सेकंड के रूप में 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 क्रमशः)। समय क्षेत्र हमेशा शून्य यूटीसी ऑफसेट है।

एनबी: इस समाधान के लिए किसी भी तीसरे पक्ष के पुस्तकालयों की आवश्यकता नहीं है और सभी आधुनिक ब्राउज़रों और जावास्क्रिप्ट इंजनों में समर्थित है।




यूनिक्स टाइमस्टैम्प 00:00:00 यूटीसी से जनवरी 1, 1 9 70 ( विकिपीडिया के अनुसार) के बाद सेकंड की संख्या है।

जावास्क्रिप्ट में दिनांक ऑब्जेक्ट का तर्क 1 जनवरी, 1 99 7 को 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)



मैं एक पुस्तकालय का उपयोग कर momentjs.com के बारे में सोचूंगा , जो यह वास्तव में सरल बनाता है:

यूनिक्स टाइमस्टैम्प के आधार पर:

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



उपरोक्त समाधानों के साथ समस्या यह है कि अगर घंटे, मिनट या सेकंड के पास केवल एक अंक (यानी 0-9) है, तो समय गलत होगा, जैसे यह 2: 3: 9 हो सकता है, लेकिन यह होना चाहिए 02: 03:09।

इस पृष्ठ के अनुसार, यह दिनांक "toLocaleTimeString" विधि का उपयोग करने के लिए एक बेहतर समाधान है।




Moment.js का उपयोग करना, आप इस तरह से समय और तारीख पा सकते हैं:

var dateTimeString = moment(1439198499).format("DD-MM-YYYY HH:mm:ss");

और आप इस का उपयोग करके केवल समय पा सकते हैं:

var timeString = moment(1439198499).format("HH:mm:ss");



एक अन्य तरीका - एक आईएसओ 8601 तिथि से

var timestamp = 1293683278;
var date = new Date(timestamp*1000);
var iso = date.toISOString().match(/(\d{2}:\d{2}:\d{2})/)
alert(iso[1]);



क्षण में आपको यूनिक्स टाइमस्टैम्प का उपयोग करना चाहिए:

var dateTimeString = moment.unix(1466760005).format("DD-MM-YYYY HH:mm:ss");



आधुनिक समाधान जिसमें 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 ) ) );



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



जवाब में से कुछ के साथ शून्य समस्या पर ध्यान दें। उदाहरण के लिए, टाइमस्टैम्प 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



@ शॉम्रट के उत्तर के आधार पर, यहां एक स्निपेट है जो स्वचालित रूप से इस तरह का दिनांक समय लिखता है:

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



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



तारीख / युग कनवर्टर देखें

आपको 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;



यदि आप यूनिक्स समय की अवधि को वास्तविक समय, मिनट और सेकंड में परिवर्तित करना चाहते हैं, तो आप निम्न कोड का उपयोग कर सकते हैं:

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 timeConverter(UNIX_timestamp){
 var a = new Date(UNIX_timestamp*1000);
     var hour = a.getUTCHours();
     var min = a.getUTCMinutes();
     var sec = a.getUTCSeconds();
     var time = hour+':'+min+':'+sec ;
     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



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







Links