将日期和时间转换为时间戳 [重复]

Posted

技术标签:

【中文标题】将日期和时间转换为时间戳 [重复]【英文标题】:Convert Date And Time To TimeStamp [duplicate] 【发布时间】:2014-04-11 11:43:47 【问题描述】:

我有一个这样的约会:

2014-01-31 17:40:56

如何将其转换为以毫秒为单位的时间戳

结果为@​​987654322@,由php计算得出。

如何在 Objective C 中将2014-01-31 17:40:56 转换为1391170256309

【问题讨论】:

(这有点应该被标记为重复,但我懒得查。) 【参考方案1】:

这对你想要做的事情有用吗?

NSString * dateString = @"2014-01-31 17:40:56";
NSDateFormatter *df=[[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
[df setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
NSDate *date = [df dateFromString:dateString];

NSTimeInterval since1970 = [date timeIntervalSince1970]; // January 1st 1970

double result = since1970 * 1000;

【讨论】:

大部分正确。日期格式化程序区域设置应设置为 en_US_POSIX,时间间隔必须乘以 1000 以产生毫秒。 更新了,你知道为什么它返回的值与他指定的略有不同吗? 如果毫秒值是从字符串派生的,而不是反过来,为什么毫秒值不总是 1000 的倍数,这一点尚不清楚。可能是 OP 的数字来自以两种形式向 PHP 询问日期,或者来自将数字转换为 char,而不是将 char 形式转换为数字。 如果你想匹配 mysql 中的 UNIX_TIMESTAMP() 时间戳格式(只有 10 位数字),那么不要乘以 1000 并使用 INT:int result = since1970【参考方案2】:

NSDate 有一个针对这个特定场景的工厂方法

- (NSTimeInterval)timeIntervalSince1970

正在计算的结果称为“纪元时间”。

【讨论】:

但当然不是毫秒。【参考方案3】:

这是我用于 NSDate 到 --> 毫秒的示例代码:

NSTimeInterval seconds = [NSDate timeIntervalSinceReferenceDate];
double milliseconds = seconds*1000;

注意:参考日期为 2001 年 1 月 1 日,GMT 因此乘以 1000

Reference - Apple Official Docs

【讨论】:

通常毫秒时间是相对于 1970 年——UNIX 纪元表示的。 @HotLicks 我只是在看 Apple docs ,它与我在回答中添加的内容相同。请告诉我,我仍然会改进我的答案。 这取决于您期望的参考日期。几乎所有这种形式的互联网时间戳都参考了 1970 年,即“UNIX 时代”(这就是提供 ...since1970 方法的原因)。 Apple 引用 2001,一些 IBM 系统引用 2000,但这些数字通常不用于互联网时间。

以上是关于将日期和时间转换为时间戳 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将日期和时间转换为时间戳

如何将日期转换为时间戳?

使用 PySpark 将日期和时间字符串转换为时间戳时如何保留毫秒?

php怎么将指定日期转换为时间戳

如何将日期时间转换为时间戳 Python

php怎么将指定日期转换为时间戳?