सामान्य तिथि को यूनिक्स टाइमस्टैम्प में परिवर्तित करें


106

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

Fiddle: http://jsfiddle.net/J2pWj/




मैंने यहां कई पोस्ट देखे हैं जो इसे PHP, Ruby आदि में परिवर्तित करते हैं ... लेकिन मुझे JS के अंदर ऐसा करने की आवश्यकता है।



1
क्या आपने newDate.getTime () / 1000 की कोशिश की है?
गैरेथ पार्कर

@ लोकीअस्तरी हाँ, क्षमा करें। मैंने खोज की लेकिन वह नहीं मिली।
स्टेन

1
हो सकता है कि मुझे कुछ याद आ रहा हो, लेकिन unix timestampइंजीनियरिंग और कंप्यूटर विज्ञान के लिए बहुत मौलिक है। काश वहाँ अंतर्निहित सुविधा पद्धति थी। वर्तमान में मैं उपयोग कर रहा हूँMath.floor((+new Date()) / 1000);
मंगल

जवाबों:


213
new Date('2012.08.10').getTime() / 1000

जावास्क्रिप्ट तिथि प्रलेखन की जाँच करें ।


1
प्रलेखन पृष्ठ के लिए धन्यवाद मैंने वही किया जो मैं चाहता था।
स्टेन

32
Math.floor यह या इसका यूनिक्स टाइमस्टैम्प नहीं है (यह एक दशमलव होगा)
BT

@ fguillen, Mooseman, मैं इस कोड को चलाता हूं और देखता हूं। एक बार जब मैंने यूनिक्स टाइमस्टैम्प को तारीख में बदल दिया तो यह मुझे 2012.08.10 के बजाय 2012.08.09 दे रहा है। ऐसा क्यों है..?
WP शिक्षार्थी

@ user2584538, नीचे मेरा जवाब देखें। आपको डेसीमल हटाना होगा।
theVinchi

1
@Mentor UNIX समय, नहीं मिली सेकंड सेकंड में मापा जाता
निकु Surdu

60
parseInt((new Date('2012.08.10').getTime() / 1000).toFixed(0))

toFixed(0)जब मिलीसेकंड से सेकंड में बदलने के लिए 1000 से विभाजित करते हैं तो किसी भी दशमलव को हटाने के लिए जोड़ना महत्वपूर्ण है ।

.getTime()समारोह मिलीसेकेंड में टाइमस्टैम्प देता है, लेकिन सच है यूनिक्स टाइमस्टैम्प सेकंड में हमेशा से रहे हैं।


5
बस सावधान रहें कि यह एक स्ट्रिंग लौटाता है, एक संख्या नहीं।
कैपज

3
अच्छा बिंदु, पूर्णांक में वापस बदलने के लिए parseInt () के साथ लपेटने के लिए परिवर्तित उत्तर।
theVinchi

11

आपको पल-पल की जांच करनी चाहिए। एपी, इसे इस्तेमाल करना बहुत आसान है और इसमें बहुत सारे बिल्ट इन फीचर्स हैं।

मुझे लगता है कि आपकी समस्या के लिए, आप कुछ इस तरह का उपयोग कर सकते हैं:

var unixTimestamp = moment('2012.08.10', 'YYYY.MM.DD').unix();


5

आप बस यूनीरी + ऑपरेटर का उपयोग कर सकते हैं

(+new Date('2012.08.10')/1000).toFixed(0);

http://xkr.us/articles/javascript/unary-add/ - डेट्स के अंतर्गत देखें।


2
बस यहाँ दो टिप्पणियाँ जोड़ना चाहते हैं: unary ऐड + ऑपरेटर की जरूरत नहीं है, जैसा /कि पहले से ही एक गणित ऑपरेटर है। इसके अलावा, toFixedएक स्ट्रिंग लौटाता है और एक संख्या नहीं, यदि प्रकार महत्वपूर्ण है ..
लॉरेंस

3

आप Date.parse () का उपयोग कर सकते हैं , लेकिन इनपुट प्रारूप जिसे वह स्वीकार करता है कार्यान्वयन-निर्भर हैं। हालाँकि, यदि आप दिनांक को ISO प्रारूप (YYYY-MM-DD) में बदल सकते हैं , तो अधिकांश कार्यान्वयनों को समझना चाहिए।

देखें क्यों Date.parse गलत परिणाम देता है?


3
var date = new Date('2012.08.10');
var unixTimeStamp = Math.floor(date.getTime() / 1000);

इस मामले में यह केवल एक पूरी संख्या (इसलिए एक साधारण विभाजन नहीं करेगा) वापस करने के लिए महत्वपूर्ण है, और यह भी केवल वास्तव में बीता हुआ सेकंड वापस करने के लिए (यही कारण है कि यह कोड उपयोग करता है Math.floor()और नहीं Math.round())।


2

आप इसे Date.parse () विधि का उपयोग करके कर सकते हैं।

Date.parse($("#yourCustomDate).val())

Date.parse ("03.03.2016") आउटपुट-> 1456959600000

Date.parse ("2015-12-12") आउटपुट-> 1449878400000


1
6 साल पहले बरमार द्वारा दिए गए जवाब से यह अंतर कैसे अलग है ?
मकर


1

PHP के साथ टाइमस्टैम्प की तुलना करने के बाद, उपरोक्त में से कोई भी मेरे टाइमज़ोन के लिए सही नहीं लगता है। नीचे दिए गए कोड ने मुझे PHP के रूप में एक ही परिणाम दिया जो कि मेरे द्वारा किए जा रहे प्रोजेक्ट के लिए सबसे महत्वपूर्ण है।

function getTimeStamp(input) {
    var parts = input.trim().split(' ');
    var date = parts[0].split('-');
	var time = (parts[1] ? parts[1] : '00:00:00').split(':');

	// NOTE:: Month: 0 = January - 11 = December.
	var d = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);
	return d.getTime() / 1000;
}

// USAGE::
var start = getTimeStamp('2017-08-10');
var end = getTimeStamp('2017-08-10 23:59:59');

console.log(start + ' - ' + end);

मैं NodeJS पर इसका उपयोग कर रहा हूं, और हमारे पास टाइमजोन 'ऑस्ट्रेलिया / सिडनी' है। इसलिए, मुझे इसे .env फ़ाइल में जोड़ना था:

TZ = 'Australia/Sydney'

इसके बराबर है:

process.env.TZ = 'Australia/Sydney'

0

टाइमस्टैम्प को यूनिक्स टाइमस्टैम्प में परिवर्तित करें।

const date = 1513787412; const unixDate = new Date(date * 1000);// Dec 20 2020 (object)

रूपांतरण के बाद टाइमस्टैम्प प्राप्त करने के लिए const TimeStamp = new Date(date*1000).getTime(); //1513787412000

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