gpt4 book ai didi

c# - 将 .NET DateTime.Ticks 属性转换为 Objective-C 中的日期

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:09:23 25 4
gpt4 key购买 nike

我有一个时间戳,表示自 0001 年 1 月 1 日午夜 12:00:00 以来经过的 100 纳秒间隔的数量(根据 http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx )。该值由用 C# 编写的服务器生成,但我需要在 iOS 上将其转换为 Objective-C 中的日期。

例如,时间戳 634794644225861250 应该给出 2012 年 8 月 2 日的日期。

最佳答案

此 C# 代码可能对您有所帮助:

// The Unix epoch is 1970-01-01 00:00:00.000
DateTime UNIX_EPOCH = new DateTime( 1970 , 1 , 1 ) ;

// The Unix epoch represented in CLR ticks.
// This is also available as UNIX_EPOCH.Ticks
const long UNIX_EPOCH_IN_CLR_TICKS = 621355968000000000 ;

// A CLR tick is 1/10000000 second (100ns).
// Available as Timespan.TicksPerSecond
const long CLR_TICKS_PER_SECOND = 10000000 ;

DateTime now = DateTime.Now ; // current moment in time
long ticks_now = now.Ticks ; // get its number of tics
long ticks = ticks_now - UNIX_EPOCH_IN_CLR_TICKS ; // compute the current moment in time as the number of ticks since the Unix epoch began.
long time_t = ticks / CLR_TICKS_PER_SECOND ; // convert that to a time_t, the number of seconds since the Unix Epoch
DateTime computed = EPOCH.AddSeconds( time_t ) ; // and convert back to a date time value

// 'computed' is the the current time with 1-second precision.

一旦你有了你的 time_t 值,即自 Unix 纪元开始以来的秒数,你应该能够在 Objective-C 中得到一个 NSDATE:

NSDate* myNSDate = [NSDate dateWithTimeIntervalSince1970:<my_time_t_value_here> ] ;

见:https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSDate_Class/Reference/Reference.html

关于c# - 将 .NET DateTime.Ticks 属性转换为 Objective-C 中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11888053/

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