जावास्क्रिप्ट में मानव तिथि को टाइमस्टैम्प में बदलने का कार्य


83

कैसे इस टाइमस्टैम्प कन्वर्ट करने के 1382086394000लिए 2013-10-18 08:53:14जावास्क्रिप्ट में एक समारोह का उपयोग कर? वर्तमान में मेरे पास यह फ़ंक्शन है:

function cleanDate(d) {return new Date(+d.replace(/\/Date\((\d+)\)\//, '$1'));}

10
यहाँ सभी उत्तरों के अलावा, js date / time हैंडलिंग में de facto standard फिलहाल क्षण है। लोगों को आश्चर्य नहीं हुआ कि किसी ने यहाँ इसका उल्लेख नहीं किया
alonisser

2
@ alonisser- शायद इसलिए कि किसी दिनांक को समय मान परिवर्तित करना तुच्छ है। इसे प्रारूपित करना विशेष रूप से कठिन नहीं है।
RobG

जवाबों:


130

मूल्य 1382086394000 शायद एक समय मान है, जो 1970-01-01T00 : 00: 00Z के बाद से मिलीसेकंड की संख्या है। आप डेट कंस्ट्रक्टर का उपयोग करके ECMAScript दिनांक ऑब्जेक्ट बनाने के लिए इसका उपयोग कर सकते हैं :

var d = new Date(1382086394000);

आप कैसे परिवर्तित करते हैं कि कुछ पठनीय आपके ऊपर है। बस इसे आउटपुट पर भेजने के लिए आंतरिक (और पूरी तरह से कार्यान्वयन निर्भर) को कॉल करना चाहिए स्ट्रींग विधि * जो आमतौर पर मानव पठनीय रूप में समकक्ष सिस्टम समय को प्रिंट करता है , जैसे।

Fri Oct 18 2013 18:53:14 GMT+1000 (EST) 

ES5 में कुछ अन्य अंतर्निहित स्वरूपण विकल्प हैं:

और इसी तरह। ध्यान दें कि अधिकांश कार्यान्वयन पर निर्भर हैं और विभिन्न ब्राउज़रों में भिन्न होंगे। यदि आप सभी ब्राउज़रों में एक ही प्रारूप चाहते हैं, तो आपको तिथि स्वयं प्रारूपित करनी होगी, जैसे:

alert(d.getDate() + '/' + (d.getMonth()+1) + '/' + d.getFullYear());

* ECMAScript 2018 में Date.prototype.toString के प्रारूप को मानकीकृत किया गया है । यह सभी कार्यान्वयनों में सर्वव्यापी होने से पहले थोड़ी देर हो सकती है, लेकिन कम से कम अधिक सामान्य ब्राउज़र अब इसका समर्थन करते हैं।


टॉगमस्ट्रिंग () भी है, लेकिन पदावनत। मुझे नहीं मिलता है कि जेएस में टोलोकेस्ट्रिंग () क्यों है, ब्राउज़र में सब कुछ स्थानीय है। या Nodejs के लिए एक अलगाव toLocaleString है? यदि आप जेएस सर्वर का उपयोग करते हैं, और क्लाइंट और सर्वर के बीच का समय अलग-अलग है, तो आपको क्लाइंट ज़ोन मिलता है?
टिमो

1
@ टिमो - "लोकेल" का उपयोग एक विधि के लिए एक मिथ्या नाम है जो एक प्रारूप प्रस्तुत करने का प्रयास करता है जो उपयोगकर्ता की प्रारूपण वरीयताओं के अनुरूप है। दुर्भाग्य से यह भाषा पर आधारित है, जो पसंदीदा प्रारूप का विशेष रूप से अच्छा निर्धारक नहीं है। यह बहुत कम विशिष्ट भाषा कोड के बजाय दिनांक स्वरूपण के लिए सिस्टम वरीयताओं के आधार पर तिथियों को प्रारूपित करना बेहतर होगा।
रॉब

32

यह ठीक काम करता है। chromeब्राउज़र में जाँच की गई :

var theDate = new Date(timeStamp_value * 1000);
dateString = theDate.toGMTString();
alert(dateString );

8
.GMTString () पदावनत किया जाता है, इसके बजाय toISOString () या toUTCString () का उपयोग करें
निकोलस लेउची

सावधानी * - *: से गुणा न करें1000 । और, आप भविष्य के अंतरिक्ष में हाइपरलूप होंगे !!
वृंदल

2
1000 के साथ गुणा 1586855504 के बाद मुझे सही परिणाम मिला अन्यथा यह 1970 प्रदान कर रहा था
वेयरवोल्फ

1000 से गुणा आपके टाइमस्टैम्प में क्या है, सेकंड या मिलीसेकंड पर निर्भर करता है
तेजस्वी कल्प तरु

27

बस क्यों नहीं

new Date (timestamp);

एक तारीख एक तारीख है, इसका प्रारूपण एक अलग मामला है।


21

Moment.js यूनिक्स टाइमस्टैम्प को किसी भी कस्टम प्रारूप में परिवर्तित कर सकता है

इस मामले में : var time = moment(1382086394000).format("DD-MM-YYYY h:mm:ss");

प्रिंट करेगा 18-10-2013 11:53:14;

यहाँ एक प्लंकर है जो इसे प्रदर्शित करता है।


इस तरह ध्वनि overkill है
ʎzɐɹƆ

धन्यवाद। इसने वास्तव में मेरी मदद की।
अकरम चौहान

13

यहाँ हर तारीख प्रारूप भ्रम के सरल तरीके हैं:

वर्तमान तिथि के लिए:

var current_date=new Date();

वर्तमान तिथि का टाइमस्टैम्प प्राप्त करने के लिए:

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

किसी विशेष तिथि को टाइमस्टैम्प में बदलने के लिए:

var timestamp_formation=new Date('mm/dd/yyyy').getTime();

टाइमस्टैम्प को दिनांक में बदलने के लिए:

    var timestamp=new Date('02/10/2016').getTime();
    var todate=new Date(timestamp).getDate();
    var tomonth=new Date(timestamp).getMonth()+1;
    var toyear=new Date(timestamp).getFullYear();
    var original_date=tomonth+'/'+todate+'/'+toyear;

  OUTPUT:
 02/10/2016

हां @melpomene, कोड का आधा अप्रासंगिक है, लेकिन मैंने लिखा है कि तारीख गठन पर और संदेह को दूर करने के लिए .. !!! और एक और बात मैंने इसे कहीं से कॉपी नहीं किया था। मैंने इसे अपने कोड में आज़माया और 2 दिन पहले मैंने इस पर काम किया
ट्रोजन

1
इससे कोई फर्क नहीं पड़ता कि आपने सचमुच इसकी प्रतिलिपि बनाई है या नहीं। मुद्दा यह है कि सभी जानकारी पहले से ही एक और जवाब में है। वैसे, आपका अंतिम उदाहरण वास्तव में आपके द्वारा दावा किए गए आउटपुट का उत्पादन नहीं करता है।
melpomene

दिखाया गया उत्पादन वास्तव में कोड आउटपुट (2/10/2016) से मेल नहीं खाता है
सुयश मित्तल

9

हमें जावास्क्रिप्ट का उपयोग करके नया फ़ंक्शन बनाने की आवश्यकता है।

function unixTime(unixtime) {

    var u = new Date(unixtime*1000);

      return u.getUTCFullYear() +
        '-' + ('0' + u.getUTCMonth()).slice(-2) +
        '-' + ('0' + u.getUTCDate()).slice(-2) + 
        ' ' + ('0' + u.getUTCHours()).slice(-2) +
        ':' + ('0' + u.getUTCMinutes()).slice(-2) +
        ':' + ('0' + u.getUTCSeconds()).slice(-2) +
        '.' + (u.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) 
    };

console.log(unixTime(1370001284))

2016-04-30 08:36:26.000

3

formatDate वह फ़ंक्शन है जिसे आप इसे कॉल कर सकते हैं और उस तिथि को पास कर सकते हैं जिसे आप प्रारूपित करना चाहते हैं dd/mm/yyyy

var unformatedDate = new Date("2017-08-10 18:30:00");
 
$("#hello").append(formatDate(unformatedDate));
function formatDate(nowDate) {
	return nowDate.getDate() +"/"+ (nowDate.getMonth() + 1) + '/'+ nowDate.getFullYear();
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="hello">


</div>


2

यह मैंने इंस्टाग्राम एपीआई के लिए किया है। 1000 से गुणा करके तिथि पद्धति के साथ परिवर्तित टाइमस्टैम्प। और फिर सभी इकाई को व्यक्तिगत रूप से जोड़ा (जैसे वर्ष, महीने, आदि)

कस्टम माह सूची नाम बनाया और getMonth()विधि के साथ मैप किया गया जो महीने का सूचकांक लौटाता है।

convertStampDate(unixtimestamp){

// Unixtimestamp

// Months array
var months_arr = ['January','February','March','April','May','June','July','August','September','October','November','December'];

// Convert timestamp to milliseconds
var date = new Date(unixtimestamp*1000);

// Year
var year = date.getFullYear();

// Month
var month = months_arr[date.getMonth()];

// Day
var day = date.getDate();

// Hours
var hours = date.getHours();

// Minutes
var minutes = "0" + date.getMinutes();

// Seconds
var seconds = "0" + date.getSeconds();

// Display date time in MM-dd-yyyy h:m:s format
var fulldate = month+' '+day+'-'+year+' '+hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

// filtered fate
var convdataTime = month+' '+day;
return convdataTime;
}

स्टाम्प तर्क के साथ कॉल करें convertStampDate('1382086394000')

और बस।


1

मेरा ES6 वेरिएंट इस तरह से एक स्ट्रिंग का उत्पादन करता है 2020-04-05_16:39:45.85725। जिस प्रारूप की आपको आवश्यकता है उसे प्राप्त करने के लिए रिटर्न स्टेटमेंट को संशोधित करने के लिए स्वतंत्र महसूस करें:

const getDateStringServ = timestamp => {

  const plus0 = num => `0${num.toString()}`.slice(-2)

  const d = new Date(timestamp)

  const year = d.getFullYear()
  const monthTmp = d.getMonth() + 1
  const month = plus0(monthTmp)
  const date = plus0(d.getDate())
  const hour = plus0(d.getHours())
  const minute = plus0(d.getMinutes())
  const second = plus0(d.getSeconds())
  const rest = timestamp.toString().slice(-5)

  return `${year}-${month}-${date}_${hour}:${minute}:${second}.${rest}`
}

-2

दी गई तारीख से टाइमस्टैम्प में तारीख की गणना करने के लिए

// सामान्य तिथि से टाइमस्टैम्प तिथि प्राप्त करने के लिए : प्रारूप में - 1560105000000

// इनपुट तिथि प्रारूप में हो सकती है: "2019-06-09T18: 30: 00.000Z"

this.calculateDateInTimestamp = function (inputDate) {
    var date = new Date(inputDate);
    return date.getTime();
}

आउटपुट : 1560018600000

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.