सेकंड में वर्तमान दिनांक / समय प्राप्त करें


297

मुझे जावास्क्रिप्ट में सेकंड में वर्तमान दिनांक / समय कैसे मिलेगा?



1
ध्यान रखें कि स्वीकृत उत्तर फ्लोटिंग-पॉइंट नंबर का उत्पादन करेगा।
e18r

जवाबों:


457
var seconds = new Date().getTime() / 1000;

.... आधी रात के बाद से आपको सेकंड देगा, 1 जनवरी 1970

संदर्भ


13
हालांकि यह सही है, यह कब उपयोगी होगा? :)
निक Craver

6
@ ध्यान दें - मुझे लगता है कि सभी उदाहरण आवश्यक रूप से सट्टा हैं और ध्वनि से वंचित होंगे - लेकिन मैं एक शॉट लूंगा :) मान लीजिए कि आपके पास यूनिक्स समय के साथ मुहर लगी डेटा समय है, और यह निर्धारित करना चाहता है कि यह उम्र है। हालांकि मुझे लगता है कि यह वही है जो 'सेकंड में वर्तमान तिथि / समय' से सबसे अधिक है; बस मेरी आंत महसूस कर रही है।
sje397

3
एक एप्लिकेशन जहां मुझे इसकी आवश्यकता थी, समय के साथ PHP बैक एंड के साथ काम करना था () फ़ंक्शन पहले से ही यह रिटर्न देता है। यह टाइम स्टैम्प के लिए भी बहुत अच्छा है क्योंकि आप आसानी से समय के अंतर को प्राप्त कर सकते हैं () हमारे वर्तमान समय और पिछली बार के स्टैम्प के बीच का समय जो डेटाबेस में स्टोर किया गया था, जब कोई उपयोगकर्ता कुछ पोस्ट करता है। इस घटना में आप '22 अक्टूबर, 2015' जैसा एक प्रारूपित समय प्राप्त करना चाहते हैं, आप अपने स्वयं के फ़ंक्शन को एक तर्क के रूप में टाइमस्टैम्प से वापस करने या स्टैक पर पहले से ही यहां एक का उपयोग करने के लिए तैयार कर सकते हैं। वैसे भी, आशा है कि जब यह उपयोगी होगा के रूप में आप कुछ अंतर्दृष्टि देता है। @ नाइकर
उहफोकुज

21
यह ध्यान देने योग्य है कि आप उसे Math.floor () में लपेटना चाहते हैं, अन्यथा आपको एक दशमलव मिलता है।
डेविड वेबर

11
एक तरीका यह उपयोगी होगा कि दो बार के बीच के समय की गणना की जाएगी।
ज़क


65

उपयोग new Date().getTime() / 1000सेकंड प्राप्त करने के लिए एक अधूरा समाधान है, क्योंकि यह फ्लोटिंग-पॉइंट इकाइयों के साथ टाइमस्टैम्प का उत्पादन करता है।

const timestamp = new Date() / 1000; // 1405792936.933
// Technically, .933 would be milliseconds. 

एक बेहतर समाधान होगा:

// Rounds the value
const timestamp = Math.round(new Date() / 1000); // 1405792937

// - OR -

// Floors the value
const timestamp = new Date() / 1000 | 0; // 1405792936

फ्लोट के बिना मान भी सशर्त बयानों के लिए सुरक्षित हैं, क्योंकि फ्लोट अवांछित परिणाम उत्पन्न कर सकता है। एक फ्लोट के साथ आपके द्वारा प्राप्त की जाने वाली ग्रैन्युलैरिटी आवश्यकता से अधिक हो सकती है।

if (1405792936.993 < 1405792937) // true

1
पूरी तरह से सहमत Math.round(new Date() / 1000)
ally

37

आपकी टिप्पणी के आधार पर, मुझे लगता है कि आप कुछ इस तरह की तलाश कर रहे हैं:

var timeout = new Date().getTime() + 15*60*1000; //add 15 minutes;

तब आपकी जाँच में, आप जाँच कर रहे हैं:

if(new Date().getTime() > timeout) {
  alert("Session has expired");
}

16

जावास्क्रिप्ट युगांतर से सेकंड की संख्या प्राप्त करने के लिए:

date = new Date();
milliseconds = date.getTime();
seconds = milliseconds / 1000;

9

// The Current Unix Timestamp
// 1443535752 seconds since Jan 01 1970. (UTC)

// Current time in seconds
console.log(Math.floor(new Date().valueOf() / 1000));  // 1443535752
console.log(Math.floor(Date.now() / 1000));            // 1443535752
console.log(Math.floor(new Date().getTime() / 1000));  // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

jQuery

console.log(Math.floor($.now() / 1000));               // 1443535752
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


3

ये जावास्क्रिप्ट समाधान आपको आधी रात, 1 जनवरी, 1970 से मिलीसेकंड या सेकंड देते हैं।

IE 9+ समाधान (IE 8 या पुराने संस्करण इसका समर्थन नहीं करते हैं।):

var timestampInMilliseconds = Date.now();
var timestampInSeconds = Date.now() / 1000; // A float value; not an integer.
    timestampInSeconds = Math.floor(Date.now() / 1000); // Floor it to get the seconds.
    timestampInSeconds = Date.now() / 1000 | 0; // Also you can do floor it like this.
    timestampInSeconds = Math.round(Date.now() / 1000); // Round it to get the seconds.

के बारे में अधिक जानकारी प्राप्त करने के लिए Date.now(): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/now

सामान्य समाधान:

// ‘+’ operator makes the operand numeric.
// And ‘new’ operator can be used without the arguments ‘(……)’.
var timestampInMilliseconds = +new Date;
var timestampInSeconds = +new Date / 1000; // A float value; not an intger.
    timestampInSeconds = Math.floor(+new Date / 1000); // Floor it to get the seconds.
    timestampInSeconds = +new Date / 1000 | 0; // Also you can do floor it like this.
    timestampInSeconds = Math.round(+new Date / 1000); // Round it to get the seconds.

यदि आप इस मामले में कुछ नहीं चाहते हैं, तो उपयोग करने के लिए सावधान रहें।

if(1000000 < Math.round(1000000.2)) // false.

2
Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000

यह आपको दिन की शुरुआत से मिलीसेकंड देना चाहिए।

(Date.now()-Math.floor(Date.now()/1000/60/60/24)*24*60*60*1000)/1000

यह आपको सेकंड देना चाहिए।

(Date.now()-(Date.now()/1000/60/60/24|0)*24*60*60*1000)/1000

पिछले दिनों के समान ही एक बिटवाइज ऑपरेटर को दिनों की मात्रा को फ़्लोर करने के लिए उपयोग करता है।


1

1 जनवरी 1970 के बाद से आप सेकंड / मिली सेकंड में समय पाने के लिए एक और तरीके से मिल सकते हैं:

var milliseconds = +new Date;        
var seconds = milliseconds / 1000;

लेकिन इस तरह के दृष्टिकोण से सावधान रहें, क्योंकि इसे पढ़ने और समझने में मुश्किल हो सकती है।


मुझे नहीं पता है कि भाषा के साइड इफेक्ट्स का उपयोग कब और अधिक सुरुचिपूर्ण तरीके से किया जाता है।
टोमज़ाहलिन

1

बेहतर शॉर्ट कट्स:

+new Date # Milliseconds since Linux epoch
+new Date / 1000 # Seconds since Linux epoch
Math.round(+new Date / 1000) #Seconds without decimals since Linux epoch

0

2020 में किसी दिन, Chrome 80.0.3987.132 के अंदर, यह देता है 1584533105

~~(new Date()/1000) // 1584533105
Number.isInteger(~~(new Date()/1000)) // true

-1

आज के दिन के कुल सेकंड पाने के लिए:

getTodaysTotalSeconds(){
    let date = new Date();        
    return +(date.getHours() * 60 * 60) + (date.getMinutes() * 60);
}

मेरे पास जोड़ने +के लिए जो वापसी में है int। इससे अन्य डेवलपर्स को मदद मिल सकती है। :)

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