टिक दिनांक ऑब्जेक्ट को टिक में कैसे परिवर्तित करें


79

मुझे टिक तिथि को जावास्क्रिप्ट तिथि ऑब्जेक्ट में कैसे बदलना चाहिए? मैं डेटा के तुल्यकालन के बाद अपने सी # आवेदन के लिए सटीक तिथि प्राप्त करने के लिए टिक्स का उपयोग करना चाहता हूं।


1
यह ध्यान रखें कि ब्राउज़र की तिथि / समय किसी भी समय-क्षेत्र पर सेट किया जा सकता है, इसलिए आपका डेटा सर्वर पर UTC के सापेक्ष नहीं होगा। मैं सामान्य रूप से पृष्ठ में सर्वर के utcnowटिक (१ ९ inject० के सापेक्ष) को इंजेक्ट करके और उस मूल्य के बीच और +new Date()पेज के प्रारंभ में अंतर को संग्रहीत करके क्षतिपूर्ति करता हूं । फिर उस तारीख तक सभी तारीख / समय की भरपाई की जा सकती है। कोई भी त्रुटि तब पृष्ठ विलंबता के ठीक नीचे होती है।
— कोडिंग

जवाबों:


119

यदि आप अपनी DateTimeवस्तु को सार्वभौमिक टिक में बदलना चाहते हैं तो निम्न कोड स्निपेट का उपयोग करें:

var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000);

एक मिलीसेकंड में 10000 टिक होते हैं। और 1 के बीच 621.355.968.000.000.000 टिक सेंट जनवरी 0001 और 1 सेंट जनवरी 1970।


5
जब आप C # में होते हैं तो यह टिक हो जाता है। एक जावास्क्रिप्ट तरीके के लिए नीचे दिए गए नुकीले जवाब देखें।
— मार्क

मुझे यह स्वीकार करना होगा कि मुझे यह पसंद नहीं है, लेकिन यह काम करता है :(
— मिल्टन

1
जोड़ा नंबर मेरे साथ काम नहीं करता है यह हमेशा मुझे समय देता है: 21: 00 पिछले दिन में, लेकिन यह एक (621356076000000000) ठीक काम किया है, कोई आइडिया ??
— मुनिआर

Google Chrome में 56.0.2924.87 (64-बिट) सही मान (621356076000000000) है, तो इन दोनों मूल्यों में क्या अंतर है?
— ओकारपोव

प्रोग्रामिंग भाषा आपके लिए क्या उत्तर है - c # या JavaScript? यानी, यह कहां लागू है?
— बैरीपिकर

55

जावास्क्रिप्ट Dateप्रकार की उत्पत्ति यूनिक्स युग है: 1 जनवरी 1970 की आधी रात।

.NET DateTimeप्रकार की उत्पत्ति 1 जनवरी 0001 को आधी रात है।

आप Dateनिम्न के रूप में .NET टिक के लिए जावास्क्रिप्ट ऑब्जेक्ट का अनुवाद कर सकते हैं:

var yourDate = new Date();  // for example

// the number of .net ticks at the unix epoch
var epochTicks = 621355968000000000;

// there are 10000 .net ticks per millisecond
var ticksPerMillisecond = 10000;

// calculate the total number of .net ticks for your date
var yourTicks = epochTicks + (yourDate.getTime() * ticksPerMillisecond);

1
मुझे स्पष्टीकरण के लिए यह उत्तर पसंद है। धन्यवाद!
— पावेल कियोच

4
(621355968e9 + (new Date()).getTime() * 1e4)एक बार समझ आने पर इन 4 लाइनों को नीचे कर दें। शानदार शेयर @LukeH
— स्लीवरनिंजा - MSFT

39

यदि "टिक्स" से आपका मतलब है "युग के बाद से मिलीसेकंड" जैसा कुछ, तो आप ".getTime ()" कह सकते हैं।

var ticks = someDate.getTime();

से MDN दस्तावेजीकरण , दिए गए मान एक है

1 जनवरी 1970 00:00:00 यूटीसी (यूनिक्स एपोच) के बाद से इंटिजर मूल्य मिलीसेकंड की संख्या का प्रतिनिधित्व करता है।


12
टिक! = मिलीसेकंड, इसलिए C # में एक एकल टिक एक सौ नैनोसेकंड का प्रतिनिधित्व करता है
— amd

11

क्यों 635646076777520000जोड़ा गया है के रूप में स्वीकार किए जाते हैं जवाब पर विस्तार ।

जावास्क्रिप्ट new Date().getTime() or Date.now()से पास किए गए मिलीसेकंड की संख्या वापस आ जाएगी midnight of January 1, 1970।

में .NET ( वर्गों के तहत स्रोतRemarks )

दिनांक समय मान 00:00:00 (मध्यरात्रि), 1 जनवरी, 0001 Anno Domini (सामान्य युग) से लेकर 11:59:59 अपराह्न, 31 दिसंबर, 9999 AD (CE) तक के मानों के साथ दिनांक और समय का प्रतिनिधित्व करता है पंचांग।

621355968000000000से टिक्स का मूल्य midnight Jan 1 01 CEहैmidnight Jan 1 1970

तो, .NET में

  Console.Write(new DateTime(621355968000000000))
  // output 1/1/1970 12:00:00 AM

इसलिए जावास्क्रिप्ट समय को .Net टिक्स में बदलने के लिए

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

 // 10,000 ticks in 1 millisecond
 // jsTicks is number of ticks from midnight Jan 1, 1970
 var jsTicks = currentTime * 10000;

 // add 621355968000000000 to jsTicks
 // netTicks is number of ticks from midnight Jan 1, 01 CE
 var netTicks = jsTicks + 621355968000000000;

अब, .NET में

 Console.Write(new DateTime(netTicks))
 // output current time

6

जावास्क्रिप्ट में दिनांक भी ऑफसेट है। यदि आपको इसका उपयोग करने से छुटकारा पाने की आवश्यकता है:

return ((date.getTime() * 10000) + 621355968000000000) - (date.getTimezoneOffset() * 600000000);

मैं स्केख के समाधान का उपयोग करता हूं और 'ऑफसेट' के लिए टिक्स को घटाता हूं।


2

वह होना चाहिए date.GetTime()। ध्यान रखें कि C # और जावास्क्रिप्ट अलग-अलग प्रारंभिक तिथियों का उपयोग करते हैं इसलिए C # DateTime में परिवर्तित होने के लिए कुछ इस तरह का उपयोग करें।

public static DateTime GetDateTime(long jsSeconds)
{
    DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    return unixEpoch.AddSeconds(jsSeconds);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.