जवाबों:
मेरा मानना है कि यह NSDate का चयनकर्ता है जिसे आप देख रहे हैं:
- (NSTimeInterval)timeIntervalSince1970
एक यूनिक्स टाइमस्टैम्प 00:00:00 यूटीसी 1 जनवरी, 1970 के बाद से सेकंड की संख्या है। यह टाइप टाइम_ टी द्वारा दर्शाया गया है , जो आमतौर पर एक हस्ताक्षरित 32-बिट पूर्णांक प्रकार (लंबा या इंट) है।
iOS प्रदान करता है - (NSTimeInterval) timeIntervalSince1970 NSDate ऑब्जेक्ट्स के लिए जो 00:00:00 GMT 1 जनवरी, 1970 के बाद से सेकंड की संख्या देता है। NSTimeInterval एक डबल फ़्लोटिंग पॉइंट प्रकार है जिससे आपको सेकंड के सेकंड और अंश मिलते हैं।
चूंकि वे दोनों एक ही संदर्भ (आधी रात 1J1970 UTC) हैं और दोनों सेकंड में रूपांतरण आसान है, NSTimeInterval को अपनी आवश्यकताओं के आधार पर time_t, गोलाई या काट-छाँट में परिवर्तित करें:
time_t unixTime = (time_t) [[NSDate date] timeIntervalSince1970];
int unixTime = floor([piece.piece_last_view timeIntervalSince1970])
जहाँ piece.piece.last_view एक NSDate है
आप इस तरह से एक तारीख से एक यूनिक्स टाइमस्टैम्प तिथि बना सकते हैं:
NSTimeInterval timestamp = [[NSDate date] timeIntervalSince1970];
- (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;
}
नोट: - टाइमस्टैम्प UTC ज़ोन में होना चाहिए, इसलिए मैं हमारे स्थानीय समय को UTC समय में परिवर्तित करता हूँ।
स्विफ्ट 3 के लिए अपडेट किया गया
// current date and time
let someDate = Date()
// time interval since 1970
let myTimeStamp = someDate.timeIntervalSince1970
टिप्पणियाँ
timeIntervalSince1970
रिटर्न TimeInterval
, जो के लिए एक typealias है Double
।
यदि आप दूसरे तरीके से जाना चाहते हैं तो आप निम्न कार्य कर सकते हैं:
let myDate = Date(timeIntervalSince1970: myTimeStamp)
यदि आप इन समय को डेटाबेस में स्टोर करना चाहते हैं या सर्वर पर भेजना चाहते हैं ... तो सबसे अच्छा यूनिक्स टाइमस्टैम्प का उपयोग करना है। यहाँ एक छोटा सा टुकड़ा है कि पाने के लिए:
+ (NSTimeInterval)getUTCFormateDate{
NSDateComponents *comps = [[NSCalendar currentCalendar]
components:NSDayCalendarUnit | NSYearCalendarUnit | NSMonthCalendarUnit
fromDate:[NSDate date]];
[comps setHour:0];
[comps setMinute:0];
[comps setSecond:[[NSTimeZone systemTimeZone] secondsFromGMT]];
return [[[NSCalendar currentCalendar] dateFromComponents:comps] timeIntervalSince1970];
}
[[NSTimeZone systemTimeZone] secondsFromGMT]]
? कृपया थोड़ा समझाइए।
नीचे दिए अनुसार UNIX समय फ़ंक्शन का उपयोग करते हुए @ kexik के सुझाव के अनुसार:
time_t result = time(NULL);
NSLog([NSString stringWithFormat:@"The current Unix epoch time is %d",(int)result]);
मेरे अनुभव के अनुसार। समय का उपयोग न करें। IntervalSince1970, यह एपोक टाइमस्टैम्प देता है - आप जीएमटी के साथ केवल कुछ सेकंड की संख्या।
[[NSDate date] timeIntervalSince1970] के साथ एक बग हुआ करता था, यह फोन के टाइमज़ोन पर आधारित समय को जोड़ने / घटाना करता था लेकिन अब यह हल हो गया है।
[NSString stringWithFormat: @"first unixtime is %ld",message,(long)[[NSDate date] timeIntervalSince1970]];
[NSString stringWithFormat: @"second unixtime is %ld",message,[[NSDate date] timeIntervalSince1970]];
[NSString stringWithFormat: @"third unixtime is %.0f",message,[[NSDate date] timeIntervalSince1970]];
पहला अविजित 1532278070
दूसरा यूनिक्स 1532278070.461380
तीसरा यूनिक्स 1532278070