मुझे टिक तिथि को जावास्क्रिप्ट तिथि ऑब्जेक्ट में कैसे बदलना चाहिए? मैं डेटा के तुल्यकालन के बाद अपने सी # आवेदन के लिए सटीक तिथि प्राप्त करने के लिए टिक्स का उपयोग करना चाहता हूं।
जवाबों:
यदि आप अपनी DateTimeवस्तु को सार्वभौमिक टिक में बदलना चाहते हैं तो निम्न कोड स्निपेट का उपयोग करें:
var ticks = ((yourDateObject.getTime() * 10000) + 621355968000000000);
एक मिलीसेकंड में 10000 टिक होते हैं। और 1 के बीच 621.355.968.000.000.000 टिक सेंट जनवरी 0001 और 1 सेंट जनवरी 1970।
जावास्क्रिप्ट 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);
(621355968e9 + (new Date()).getTime() * 1e4)एक बार समझ आने पर इन 4 लाइनों को नीचे कर दें। शानदार शेयर @LukeH
यदि "टिक्स" से आपका मतलब है "युग के बाद से मिलीसेकंड" जैसा कुछ, तो आप ".getTime ()" कह सकते हैं।
var ticks = someDate.getTime();
से MDN दस्तावेजीकरण , दिए गए मान एक है
1 जनवरी 1970 00:00:00 यूटीसी (यूनिक्स एपोच) के बाद से इंटिजर मूल्य मिलीसेकंड की संख्या का प्रतिनिधित्व करता है।
क्यों 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
जावास्क्रिप्ट में दिनांक भी ऑफसेट है। यदि आपको इसका उपयोग करने से छुटकारा पाने की आवश्यकता है:
return ((date.getTime() * 10000) + 621355968000000000) - (date.getTimezoneOffset() * 600000000);
मैं स्केख के समाधान का उपयोग करता हूं और 'ऑफसेट' के लिए टिक्स को घटाता हूं।
वह होना चाहिए 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);
}
utcnowटिक (१ ९ inject० के सापेक्ष) को इंजेक्ट करके और उस मूल्य के बीच और+new Date()पेज के प्रारंभ में अंतर को संग्रहीत करके क्षतिपूर्ति करता हूं । फिर उस तारीख तक सभी तारीख / समय की भरपाई की जा सकती है। कोई भी त्रुटि तब पृष्ठ विलंबता के ठीक नीचे होती है।