gpt4 book ai didi

iphone - 如何将 unix 时间戳转换为人类可读时间?

转载 作者:可可西里 更新时间:2023-11-01 03:36:47 28 4
gpt4 key购买 nike

我从数据库中获取了一个 unix 时间戳,我正在尝试从中创建一个人类可读的日期。我是这样用的

long t1=[time longLongValue];

NSDate* date=[NSDate dateWithTimeIntervalSince1970:t1];

其中 time 是时间戳。当我打印日期时,我得到

1956-02-18 19:04:01 +0000 

代替

2013-01-02 12:31:03 +0000

时间戳是 1356765933449

最佳答案

正如鲍里斯在他的回答中正确指出的那样,这是一个整数溢出问题。

我不知道你的 time 对象是什么,但不是 signed long int 使用 NSTimeInterval

在 iOS 上 NSTimeInterval 当前定义为

typedef double NSTimeInterval;

但你不应该太在意这个。坚持使用类型同义词可以保护你,以防 Apple 决定将基础定义更改为其他内容。

也就是说你应该把你的代码改成类似的东西

NSTimeInterval epoch = [time doubleValue];
NSDate * date = [NSDate dateWithTimeIntervalSince1970:epoch];

关于我之前描述的代码可维护性问题,这里你明确地使用了一个doubleValue(你没有太多选择),但好消息是如果苹果改变了NSTimeInterval 定义为与 double 赋值不兼容的内容,编译器会通知您。

关于iphone - 如何将 unix 时间戳转换为人类可读时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14121403/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com