मिलीसेकंड में वर्तमान तिथि प्राप्त करें


94

क्या कोई मुझे यह अनुमान दे सकता है कि मिलीसेकंड में वर्तमान तिथि कैसे प्राप्त करें?



जब आप मिलीसेकंड में वर्तमान तिथि कहते हैं, तो आपका क्या मतलब है? क्या आप किसी विशिष्ट तिथि के लिए अपने अपेक्षित आउटपुट का उदाहरण प्रदान कर सकते हैं?
lnafziger

जवाबों:


103

ऐसा करने के कई तरीके हैं, हालांकि मेरा निजी पसंदीदा है:

CFAbsoluteTime timeInSeconds = CFAbsoluteTimeGetCurrent();

आप यहाँ इस विधि के बारे में अधिक पढ़ सकते हैं । आप एक NSDate ऑब्जेक्ट भी बना सकते हैं और timeIntervalSince1970 पर कॉल करके समय प्राप्त कर सकते हैं जो 1/1/1912 से सेकंड लौटाता है :

NSTimeInterval timeInSeconds = [[NSDate date] timeIntervalSince1970];

और स्विफ्ट में:

let timeInSeconds: TimeInterval = Date().timeIntervalSince1970

4
im कोशिश कर रहा है कोड निम्नलिखित NSTimeInterval milisecondedDate = ([[NSDate तारीख] timeIntervalSince1970] * 1000); NSLog (@ "didReceiveResponse ----% d", milisecondedDate);
शिव

2
समस्या NSLog कथन के साथ है। NSTimeInterval एक टाइप किए गए डबल है। इस प्रकार आपको% d के बजाय% f का उपयोग करना चाहिए।
पावेल

55
[[NSDate तारीख] timeIntervalSince1970] एक NSTimeInterval लौटाता है, जो सेकंड में एक अवधि है, मिलि-सेकंड नहीं।
एरिक वैन डेर न्यूट सिप

12
ध्यान दें कि CFAbsoluteTimeGetCurrent()संदर्भ तिथि के सापेक्ष समय लौटाता है Jan 1 2001 00:00:00 GMT। ऐसा नहीं है कि प्रश्न में एक संदर्भ तिथि दी गई थी, लेकिन ध्यान रखें कि यह एक यूनिक्स टाइमस्टैम्प नहीं है।
नी

2
[[NSDate तारीख] timeIntervalSince1970] सेकंड में समय देता है और मिलीसेकंड में नहीं।
SAPLogix

61

NSTimeInterval को सीधे मेरे लिए लंबे समय तक प्रवाहित करना, इसलिए इसके बजाय मुझे लंबे समय तक कास्ट करना पड़ा।

long long milliseconds = (long long)([[NSDate date] timeIntervalSince1970] * 1000.0);

परिणाम यूनिक्स की तरह 13 अंकों का टाइमस्टैम्प है।


4
यह अभ्यस्त वास्तविक मिलीसेकंड लौटाता है क्योंकि timeIntervalSince1970 सेकंड में अंतराल देता है, इसलिए हमारे पास वांछित मिली सटीकता नहीं है।
दानपे १

9
timeIntervalSince1970 विधि पूरी संख्या पर सेकंड में वापसी करता है, लेकिन यह एक है doubleभी अच्छी तरह से जो हिसाब से मिलीसेकेंड में बदला जा सकता के रूप में आंशिक दूसरी शामिल हैं। इसलिए, 1000 से गुणा।
विलेयमाब 20

@wileymap हाँ, आप सही हैं। मुझे यह पता लगा कि बाद में
Danpe

2
long long? यह
लंगड़ा

@ user924 अधिक सहमत नहीं हो सका। इसलिए मैंने इसे लिखना बंद कर दिया। ;)
विलेयमाब

10
NSTimeInterval milisecondedDate = ([[NSDate date] timeIntervalSince1970] * 1000);

im कोशिश कर रहा है कोड निम्नलिखित NSTimeInterval milisecondedDate = ([[NSDate तारीख] timeIntervalSince1970] * 1000); NSLog (@ "didReceiveResponse ----% d", milisecondedDate); - लेकिन यह ऋणात्मक वैल में मान दिखा रहा है - जैसे ResponseTIME ---- 556610175 ResponseTIME ---- -1548754395
शिव

1
% d के बजाय% f प्लेसहोल्डर का उपयोग करने का प्रयास करें। यदि वह मदद नहीं करता है - 1000 से गुणा को हटा दें
एइमांतास

@ एइमांतास, जब मैं% f का उपयोग करने की कोशिश करता हूं ... Im रिस्पॉन्स टाइम के रूप में समय पा रहा है = 1306494959011.239014 रिस्पांस टाइम = 1306494910724.744141 यदि यह एमएस है तो उपरोक्त समय एक घंटे से अधिक है।
शिव

वर्तमान तिथि 1970 के बाद से सेकंड में समय अंतराल है। आपने संदर्भ तिथि के बारे में कुछ भी उल्लेख नहीं किया है।
ईमंतस

मैं केवल वर्तमान तिथि समय अंतराल wil ले सकता हूँ
निकालता

8
extension NSDate {

    func toMillis() -> NSNumber {
        return NSNumber(longLong:Int64(timeIntervalSince1970 * 1000))
    }

    static func fromMillis(millis: NSNumber?) -> NSDate? {
        return millis.map() { number in NSDate(timeIntervalSince1970: Double(number) / 1000)}
    }

    static func currentTimeInMillis() -> NSNumber {
        return NSDate().toMillis()
    }
}

7

आप ऐसा कर सकते हैं:

long currentTime = (long)(NSTimeInterval)([[NSDate date] timeIntervalSince1970]);

यह एक मान एन मिलीसेकंड लौटाएगा, इसलिए यदि आप परिणामी मूल्य को 1000 से गुणा करते हैं (जैसा कि मेरे Eimantas का सुझाव दिया गया है) तो आप लंबे प्रकार से ओवरफ्लो करेंगे और इसका परिणाम नकारात्मक मान होगा।

उदाहरण के लिए, यदि मैं अभी उस कोड को चलाता हूं, तो इसका परिणाम होगा

currentTime = 1357234941

तथा

currentTime /seconds / minutes / hours / days = years
1357234941 / 60 / 60 / 24 / 365 = 43.037637652207

5

@JavaZava आपका समाधान अच्छा है, लेकिन यदि आप चाहते हैं कि जावा या जावास्क्रिप्ट (और अन्य भाषाओं) में इस समय स्टैम्प प्रारूपण के अनुरूप होने के लिए 13 अंकों का लंबा मान होना चाहिए:

NSTimeInterval time = ([[NSDate date] timeIntervalSince1970]); // returned as a double
long digits = (long)time; // this is the first 10 digits
int decimalDigits = (int)(fmod(time, 1) * 1000); // this will get the 3 missing digits
long timestamp = (digits * 1000) + decimalDigits;

या (यदि आपको एक स्ट्रिंग की आवश्यकता है):

NSString *timestampString = [NSString stringWithFormat:@"%ld%d",digits ,decimalDigits];

NSString * टाइमस्टैम्पस्ट्रिंग = [NSString stringWithFormat: @ "% ld% 03d", अंक, दशमलव; वास्तव में सही है। आपके मामले में अगर दशमलव १०० से कम है तो गलत परिणाम देगा।
PANKAJ VERMA

4

जैसा पहले बताया गया है, [[NSDate तारीख] timeIntervalSince1970] एक NSTimeInterval देता है, जो सेकंड में एक अवधि है, मिली-सेकंड नहीं।

आप https://currentmillis.com/ पर जा सकते हैं यह देखने के लिए कि आप जिस भाषा में चाहते हैं वह कैसे प्राप्त कर सकते हैं। यहाँ सूची है -

ActionScript    (new Date()).time
C++ std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count()
C#.NET  DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
Clojure (System/currentTimeMillis)
Excel / Google Sheets*  = (NOW() - CELL_WITH_TIMEZONE_OFFSET_IN_HOURS/24 - DATE(1970,1,1)) * 86400000
Go / Golang time.Now().UnixNano() / 1000000
Hive*   unix_timestamp() * 1000
Java / Groovy / Kotlin  System.currentTimeMillis()
Javascript  new Date().getTime()
MySQL*  UNIX_TIMESTAMP() * 1000
Objective-C (long long)([[NSDate date] timeIntervalSince1970] * 1000.0)
OCaml   (1000.0 *. Unix.gettimeofday ())
Oracle PL/SQL*  SELECT (SYSDATE - TO_DATE('01-01-1970 00:00:00', 'DD-MM-YYYY HH24:MI:SS')) * 24 * 60 * 60 * 1000 FROM DUAL
Perl    use Time::HiRes qw(gettimeofday); print gettimeofday;
PHP round(microtime(true) * 1000)
PostgreSQL  extract(epoch FROM now()) * 1000
Python  int(round(time.time() * 1000))
Qt  QDateTime::currentMSecsSinceEpoch()
R*  as.numeric(Sys.time()) * 1000
Ruby    (Time.now.to_f * 1000).floor
Scala   val timestamp: Long = System.currentTimeMillis
SQL Server  DATEDIFF(ms, '1970-01-01 00:00:00', GETUTCDATE())
SQLite* STRFTIME('%s', 'now') * 1000
Swift*  let currentTime = NSDate().timeIntervalSince1970 * 1000
VBScript / ASP  offsetInMillis = 60000 * GetTimeZoneOffset()
WScript.Echo DateDiff("s", "01/01/1970 00:00:00", Now()) * 1000 - offsetInMillis + Timer * 1000 mod 1000

उद्देश्य के लिए CI ने इसे प्रिंट करने के लिए नीचे जैसा कुछ किया -

long long mills = (long long)([[NSDate date] timeIntervalSince1970] * 1000.0);
 NSLog(@"Current date %lld", mills);

इससे मदद मिलती है।


1

Cconvert NSTimeInterval milisecondedDateमान nsstringऔर उसके बाद में परिवर्तित करें int


0

मिलीसेकंड में वर्तमान दिनांक प्राप्त करने के लिए आप निम्न विधियों का उपयोग कर सकते हैं।

[[NSDate date] timeIntervalSince1970];

या

double CurrentTime = CACurrentMediaTime(); 

स्रोत: iPhone: वर्तमान मिलीसेकंड कैसे प्राप्त करें?


0
- (void)GetCurrentTimeStamp
    {
        NSDateFormatter *objDateformat = [[NSDateFormatter alloc] init];
        [objDateformat setDateFormat:@"yyyy-MM-dd"];
        NSString    *strTime = [objDateformat stringFromDate:[NSDate date]];
        NSString    *strUTCTime = [self GetUTCDateTimeFromLocalTime:strTime];//You can pass your date but be carefull about your date format of NSDateFormatter.
        NSDate *objUTCDate  = [objDateformat dateFromString:strUTCTime];
        long long milliseconds = (long long)([objUTCDate timeIntervalSince1970] * 1000.0);

        NSString *strTimeStamp = [NSString stringWithFormat:@"%lld",milliseconds];
        NSLog(@"The Timestamp is = %@",strTimeStamp);
    }

 - (NSString *) GetUTCDateTimeFromLocalTime:(NSString *)IN_strLocalTime
    {
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"yyyy-MM-dd"];
        NSDate  *objDate    = [dateFormatter dateFromString:IN_strLocalTime];
        [dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]];
        NSString *strDateTime   = [dateFormatter stringFromDate:objDate];
        return strDateTime;
    }

0

मिलीसेकंड में समय पाने के लिए इसका उपयोग करें (long)(NSTimeInterval)([[NSDate date] timeIntervalSince1970])


0

तारीख पर विस्तार शायद इसके बारे में सबसे अच्छा तरीका है।

extension NSDate {
    func msFromEpoch() -> Double {
        return self.timeIntervalSince1970 * 1000
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.