菜鸟教程小白 发表于 2022-12-12 17:42:04

c# - .NET 日期如何转换为 NSTimeInterval?


                                            <p><p>我们有 .NET 代码 (C#) 写入 SQLite 数据库,然后由带有 Objective-c 的 iOS (iPhone) 应用程序读取。</p>

<p>SQLite 中使用的日期格式是 NSTimeInterval(使用 dateWithIntervalSince1970 表示 NSDate),因为它在 iPhone 上很有效。</p>

<p><strong>如何将.NET DateTime 转换为 NSTimeInterval 以便在使用 dateWithIntervalSince1970 提取时日期正确?</strong></p>

<p>注意事项:
1)我试图搜索 NSTimeInterval 的基本工作原理,但只找到这个不透明的文档:
<a href="http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html" rel="noreferrer noopener nofollow">http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_DataTypes/Reference/reference.html</a> </p>

<p>2) 尽管 C# 代码是理想的<strong>我很乐意使用从 3 个整数(年/月/日)到 double 的伪代码。</strong></p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我认为你的意思是 <code>NSTimeInterval</code>。 <code>NSTimeInterval</code> 表示时间跨度,以秒为单位,因此它在 .NET 中的逻辑等价物是 <code>System.TimeSpan</code> 而不是 <code>System.DateTime</code>。但是,如果您将其指定为 <em>自 <code>1970 年 1 月 1 日 00:00:00 GMT</code></em> 以来的时间跨度,这就是您使用 <code>-timeIntervalSince1970</得到的时间跨度code>,则它与<code>System.DateTime</code>之间的转换成为可能。</p>

<p>要在 <code>System.DateTime</code> 和 POSIX 时间戳(在这种情况下 <code>NSTimeInterval</code> 加上亚秒精度)之间进行转换,您可能需要这样的东西:</p>

<pre><code>DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
DateTime dt = ...;
double intervalSince1970 = (dt - unixEpoch).TotalSeconds;
</code></pre>

<p>走另一条路:</p>

<pre><code>DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
double intervalSince1970 = ...;
DateTime dt = unixEpoch + TimeSpan.FromSeconds(intervalSince1970);
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于c# - .NET 日期如何转换为 NSTimeInterval?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/7734315/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/7734315/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: c# - .NET 日期如何转换为 NSTimeInterval?