सेकंड में दो तिथियों के बीच समय का अंतर पाएं


149

मैं सेकंड में दो तारीखों के बीच अंतर पाने की कोशिश कर रहा हूं। तर्क इस तरह होगा:

  • एक प्रारंभिक तिथि निर्धारित करें जो अब होगी;
  • एक अंतिम तिथि निर्धारित करें जो प्रारंभिक तिथि होगी और भविष्य में कुछ सेकंड की राशि होगी (उदाहरण के लिए 15 कहते हैं)
  • उन दोनों के बीच अंतर प्राप्त करें (सेकंड की मात्रा)

मैं इसे तारीखों के साथ क्यों कर रहा हूं इसका कारण यह है क्योंकि अंतिम तिथि / समय कुछ अन्य चर पर निर्भर करता है और यह कभी भी एक जैसा नहीं होता (यह इस बात पर निर्भर करता है कि उपयोगकर्ता कितनी तेजी से कुछ करता है) और मैं अन्य चीजों के लिए प्रारंभिक तिथि भी संग्रहीत करता हूं।

मैं कुछ इस तरह की कोशिश कर रहा हूँ:

var _initial = new Date(),
    _initial = _initial.setDate(_initial.getDate()),
    _final = new Date(_initial);
    _final = _final.setDate(_final.getDate() + 15 / 1000 * 60);

var dif = Math.round((_final - _initial) / (1000 * 60));

बात यह है कि मुझे कभी सही अंतर नहीं मिला। मैंने विभाजित करने की कोशिश की, जिससे 24 * 60मुझे सेकंड के साथ छोड़ दिया जाए, लेकिन मुझे यह कभी भी सही नहीं मिला। तो यह मेरे तर्क में क्या गलत है? मैं कुछ बेवकूफी भरी गलती कर सकता हूँ क्योंकि यह काफी देर हो चुकी है, लेकिन यह मुझे परेशान करता है कि मैं इसे काम नहीं कर सकता :)


2
संचालन का आदेश महत्वपूर्ण है।
डायलन क्रॉस

1
तो आप एक टाइमस्टैम्प रखना चाहते हैं, 15 सेकंड जोड़ें, और फिर देखें कि सेकंड में क्या अंतर है। मैं कहता हूँ कि अंतर अधिक है कि अंतर होगा .... इसके लिए प्रतीक्षा करें .... 15 सेकंड?
एडेनो


1
मैं वास्तव में समझता हूं कि आप क्या करने की कोशिश कर रहे हैं (मुझे लगता है), लेकिन यदि आप नई तारीख () लेते हैं, जो अभी यूनिक्स समय है, तो 15 सेकंड जोड़ें, और तुरंत अंतर की जांच करें, अंतर 15 सेकंड होगा (यह गणना करने के लिए ली गई मिलीसेकेंड माइनस), लेकिन मैं आपके इरादे का अनुमान लगा रहा हूं कि भविष्य में इसकी तुलना किसी तरह की जाएगी।
एडेनो

1
मैं वास्तव में यह, मेरी बात साबित करने के लिए मिलता है, यहाँ एक काम कर रहा है बेला अपने ऊपर के उदाहरण के लिए। यदि आप यह पता लगाने की कोशिश कर रहे हैं कि उपयोगकर्ता ने कुछ करने में कितना समय लिया, तो आप आमतौर पर टाइमस्टैम्प प्राप्त करते हैं जब उपयोगकर्ता ऑपरेशन शुरू करता है, और उपयोगकर्ता द्वारा ऑपरेशन समाप्त होने पर टाइमस्टैम्प, और उन की तुलना करें, और आप जानते हैं कि कितना समय लगा। । 15 सेकंड के लिए बिल्ली क्या है?
एडेनो

जवाबों:


283

कोड

var startDate = new Date();
// Do your operations
var endDate   = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;

या भी सरल के (endDate - startDate) / 1000रूप में टिप्पणियों में बताया जब तक आप टाइपस्क्रिप्ट का उपयोग कर रहे हैं।


स्पष्टीकरण

आपको ऑब्जेक्ट के getTime()लिए विधि को कॉल करने की आवश्यकता है Date, और फिर बस उन्हें घटाएं और 1000 से विभाजित करें (क्योंकि यह मूल रूप से मिलीसेकंड में है)। एक अतिरिक्त के रूप में, जब आप getDate()विधि को बुला रहे हैं, तो आप वास्तव में महीने का दिन 1 और 31 (शून्य आधारित नहीं) के बीच पूर्णांक के रूप में प्राप्त कर रहे हैं जो उस समय के विपरीत है जो आपको getTime()विधि को कॉल करने से मिलेगा ; 1 जनवरी 1970, 00:00 के बाद से मिलीसेकंड की संख्या का प्रतिनिधित्व करना


शेख़ी

आपके दिनांक से संबंधित ऑपरेशन क्या हैं, इस पर निर्भर करते हुए, आप किसी लाइब्रेरी जैसे कि date.js या moment.js को एकीकृत करने में निवेश करना चाह सकते हैं, जो डेवलपर के लिए चीजों को इतना आसान बनाते हैं , लेकिन यह सिर्फ व्यक्तिगत प्राथमिकता का मामला है।

उदाहरण के लिए क्षण में। जेएस हम वह करेंगे moment1.diff(moment2, "seconds")जो सुंदर है।


इस उत्तर के लिए उपयोगी डॉक्स


14
GetTIme की कोई आवश्यकता नहीं है , डेट्स को एक-दूसरे से घटाया जा सकता है - ऑपरेटर उन्हें संख्याओं में ले जाएगा।
रॉब

3
यदि आप टाइपस्क्रिप्ट का उपयोग करते हैं तो गेटटाइम आवश्यक है, यह किसी भी, संख्या या
एनम के

आप उपयोग कर सकते हैं .valueOf(), जिसे -ऑपरेटर किसी भी मामले में कॉल करेगा ...
हेरिटिक बंदर

1
कैसे के बारे में अगर हम घंटे / मिनट समय के अंतर के रूप में अच्छी तरह से की जरूरत है ...? क्या मुझे इसे 60 या इसके कई भाग देना चाहिए ...? @ जुआन
गमरू

कृपया अलग-अलग प्रश्नों के रूप में नए संदेह जोड़ने के लिए, लेकिन जब से यह एक शायद डुप्लीकेट के रूप में बंद कर दिया जा सकता है, एक नज़र यहाँ ले stackoverflow.com/questions/1322732/...
जुआन कोर्टेस

5

आप new Date().getTime()टाइमस्टैम्प प्राप्त करने के लिए उपयोग कर सकते हैं । फिर आप अंत और शुरू के बीच के अंतर की गणना कर सकते हैं और अंत में टाइमस्टैम्प को बदल सकते हैं जो कि msहै s

const start = new Date().getTime();
const end = new Date().getTime();

const diff = end - start;
const seconds = Math.floor(diff / 1000 % 60);


1

नीचे दिए गए कोड सेकंड में समय का अंतर देंगे।

var date1 = new Date(); // current date
var date2 = new Date("06/26/2018"); // mm/dd/yyyy format
var timeDiff = Math.abs(date2.getTime() - date1.getTime()); // in miliseconds
var timeDiffInSecond = Math.ceil(timeDiff / 1000); // in second

alert(timeDiffInSecond );

0

उच्च स्तरीय प्रोग्रामिंग भाषाओं से समर्पित कार्यों का उपयोग करने का प्रयास करें। जावास्क्रिप्ट .getSeconds();यहाँ सूट:

var specifiedTime = new Date("November 02, 2017 06:00:00");
var specifiedTimeSeconds = specifiedTime.getSeconds(); 

var currentTime = new Date();
var currentTimeSeconds = currentTime.getSeconds(); 

alert(specifiedTimeSeconds-currentTimeSeconds);

0

अब और 10 मिनट बाद के समय के बीच अंतर

let start_time = moment().format('YYYY-MM-DD HH:mm:ss');
let next_time = moment().add(10, 'm').format('YYYY-MM-DD HH:mm:ss');

let diff_milliseconds = Date.parse(next_time) - Date.parse(star_time);
let diff_seconds = diff_milliseconds * 1000;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.