Может ли кто-нибудь дать мне представление о том, как получить текущую дату в миллисекундах?
Получить текущую дату в миллисекундах
Ответ 1
Есть несколько способов сделать это, хотя мой личный фаворит:
CFAbsoluteTime timeInSeconds = CFAbsoluteTimeGetCurrent();
Подробнее об этом методе можно узнать здесь. Вы также можете создать объект NSDate и получить время, вызвав timeIntervalSince1970, который возвращает секунд с 01.01.1970:
NSTimeInterval timeInSeconds = [[NSDate date] timeIntervalSince1970];
Cheers, Pawel
Ответ 2
Направляя NSTimeInterval прямо на длинный переполненный для меня, так что вместо этого мне пришлось бросить долго.
long long milliseconds = (long long)([[NSDate date] timeIntervalSince1970] * 1000.0);
В результате получается 13-значная метка времени, как в Unix.
Ответ 3
NSTimeInterval milisecondedDate = ([[NSDate date] timeIntervalSince1970] * 1000);
Ответ 4
Вы можете просто сделать это:
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
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()
}
}
Ответ 6
@JavaZava ваше решение хорошо, но если вы хотите иметь 13-значное длинное значение, которое должно соответствовать форматированию штампа времени в Java или JavaScript (и других языках), используйте этот метод:
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];
Ответ 7
Cconvert NSTimeInterval
milisecondedDate
значение nsstring
и после этого преобразуется в int
.
Ответ 8
Вы можете использовать следующие методы для получения текущей даты в миллисекундах.
[[NSDate date] timeIntervalSince1970];
ИЛИ
double CurrentTime = CACurrentMediaTime();
Ответ 9
- (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;
}
Ответ 10
Используйте это, чтобы получить время в миллисекундах (long)(NSTimeInterval)([[NSDate date] timeIntervalSince1970])
.
Ответ 11
Расширение по дате, вероятно, лучший способ об этом.
extension NSDate {
func msFromEpoch() -> Double {
return self.timeIntervalSince1970 * 1000
}
}