I need to be able to convert a date to a time stamp, an epoch in milliseconds. All I see online are for converting milliseconds to NSDate and not the other way round. Any help out there?
我需要能够将日期转换为时间戳,一个以毫秒为单位的纪元。我在网上看到的只是将毫秒转换为NSDate,而不是相反。有帮助吗?
3 个解决方案
#1
45
NSTimeInterval is a double that already contains sub-second data after the decimal point. Depending what you need, your conversion could be a simple as multiplying by 1000.
NSTimeInterval是一个双精度数,它包含小数点后的亚秒数据。根据您的需要,转换可能很简单,乘以1000即可。
- (void)testDateFormat
{
NSDate *date = [NSDate date];
NSLog(@"Time: %f", floor([date timeIntervalSince1970] * 1000));
NSLog(@"Time: %f", floor([date timeIntervalSince1970]));
NSLog(@"Time: %lli", [@(floor([date timeIntervalSince1970] * 1000)) longLongValue]);
NSLog(@"Time: %lli", [@(floor([date timeIntervalSince1970])) longLongValue]);
}
// Result
// 2013-04-15 13:28:11.284 TestApp[10469:907] Time: 1366057691284.000000
// 2013-04-15 13:28:11.286 TestApp[10469:907] Time: 1366057691.000000
// 2013-04-15 13:28:11.287 TestApp[10469:907] Time: 1366057691284
// 2013-04-15 13:28:11.288 TestApp[10469:907] Time: 1366057691
#2
7
timeIntervalSince1970 will return seconds from 1970. There are other timeIntervalSince methods if needed.
timeIntervalSince1970将从1970年开始返回秒数。如果需要,还有其他timeIntervalSince方法。
https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/timeIntervalSince1970
#3
1
timeIntervalSince1970 multiply the return value by 1000 because the returned value is in second not in millisecond kindly check that website for more testing http://currentmillis.com/
timeIntervalSince1970将返回值乘以1000,因为返回的值是秒,而不是毫秒,请检查该网站是否有更多测试http://currentmillis.com/
#1
45
NSTimeInterval is a double that already contains sub-second data after the decimal point. Depending what you need, your conversion could be a simple as multiplying by 1000.
NSTimeInterval是一个双精度数,它包含小数点后的亚秒数据。根据您的需要,转换可能很简单,乘以1000即可。
- (void)testDateFormat
{
NSDate *date = [NSDate date];
NSLog(@"Time: %f", floor([date timeIntervalSince1970] * 1000));
NSLog(@"Time: %f", floor([date timeIntervalSince1970]));
NSLog(@"Time: %lli", [@(floor([date timeIntervalSince1970] * 1000)) longLongValue]);
NSLog(@"Time: %lli", [@(floor([date timeIntervalSince1970])) longLongValue]);
}
// Result
// 2013-04-15 13:28:11.284 TestApp[10469:907] Time: 1366057691284.000000
// 2013-04-15 13:28:11.286 TestApp[10469:907] Time: 1366057691.000000
// 2013-04-15 13:28:11.287 TestApp[10469:907] Time: 1366057691284
// 2013-04-15 13:28:11.288 TestApp[10469:907] Time: 1366057691
#2
7
timeIntervalSince1970 will return seconds from 1970. There are other timeIntervalSince methods if needed.
timeIntervalSince1970将从1970年开始返回秒数。如果需要,还有其他timeIntervalSince方法。
https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html#//apple_ref/occ/instm/NSDate/timeIntervalSince1970
#3
1
timeIntervalSince1970 multiply the return value by 1000 because the returned value is in second not in millisecond kindly check that website for more testing http://currentmillis.com/
timeIntervalSince1970将返回值乘以1000,因为返回的值是秒,而不是毫秒,请检查该网站是否有更多测试http://currentmillis.com/