热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大纪元时间(自1970年以来的蜱虫)-Mac与Windows-EpochTime(Tickssince1970)-Macvs.Windows

IhavesomeC#webservicesthatreturnJSON.The.NETJavaScriptSerializerreturnsdatesinEpochT

I have some C# web services that return JSON. The .NET JavascriptSerializer returns dates in Epoch Time (milliseconds since 1970). On any Windows machine, the web based application processes the milliseconds back into the proper date without a problem.

我有一些返回JSON的C#Web服务。 .NET JavascriptSerializer以大纪元时间(自1970年以来的毫秒)返回日期。在任何Windows计算机上,基于Web的应用程序将毫秒数处理回正确的日期而不会出现问题。

On my Mac, the dates are sometimes off by 1 hour. Not every time. Only sometimes. This is now happening on the iPhone front end I'm building as well.

在我的Mac上,日期有时会偏离1小时。不是每一次。只是有时。现在正在我正在构建的iPhone前端上发生这种情况。

I thought at first that I had lost some precision when dividing the milliseconds by 1000 to create a valid Objective-C NSDate object. Then I tested date creation in Javascript on Mac Firefox with the same timestamp and got the same 1 hour offset.

我首先想到,在将毫秒除以1000时,我已经失去了一些精度,以创建有效的Objective-C NSDate对象。然后我在Mac Firefox上使用相同的时间戳在Javascript中测试日期创建,并获得相同的1小时偏移量。

Any ideas? Thanks...

有任何想法吗?谢谢...

Edit: I also noticed in the Console in XCode that the date created had a -4 or -5 next to it. I'm assuming that is a GMT offset. Those seem to vary independent of whether or not the date is offset by 1 hour. So some -4 dates and some -5 dates are correct and some of either one are offset.

编辑:我还注意到在XCode的控制台中,创建的日期旁边有一个-4或-5。我假设这是一个GMT偏移量。这些似乎随着日期是否偏移1小时而变化。因此,一些-4个日期和一些-5个日期是正确的,其中一个是偏移的。

Edit: Examples using:

编辑:使用示例:

console.log(new Date(-1173643200000));

returns Sun Oct 23 1932 00:00:00 GMT-0400 (EST)

返回Sun Oct 23 1932 00:00:00 GMT-0400(EST)

console.log(new Date(-1031515200000));

returns Sat Apr 24 1937 23:00:00 GMT-0500 (EST)

返回Sat Apr 24 1937 23:00:00 GMT-0500(EST)

NSDate* date = [NSDate dateWithTimeIntervalSince1970:ticks / 1000];

-589320000000 =
1951-04-30 00:00:00 -0400

-1173643200000 =
1932-10-22 23:00:00 -0500 

(This one returns correct in Firebug Console, wrong in XCode Console)

(这个在Firebug控制台中返回正确,在XCode控制台中错误)

-1303416000000 =
1928-09-12 00:00:00 -0400

-1492545600000 =
1922-09-15 00:00:00 -0400

-1263668400000 =
1929-12-16 00:00:00 -0500

-1252094400000 =
1930-04-29 00:00:00 -0400

-1046458800000 =
1936-11-03 00:00:00 -0500

-1298746800000 =
1928-11-05 00:00:00 -0500

-1031515200000 =
1937-04-24 23:00:00 -0500   

(Returns wrong in both Firebug Console and XCode Console)

(在Firebug控制台和XCode控制台中返回错误)

-910465200000 =
1941-02-24 00:00:00 -0500

-1152648000000 =
1933-06-23 00:00:00 -0400

-1109793600000 =
1934-10-31 23:00:00 -0500

Is it possible that Microsoft/Mozilla/Apple have conflicting rules defining when Daylight Saving Time started back then?

微软/ Mozilla / Apple是否有可能在夏令时开始时制定相互矛盾的规则?

Edit: Mac Firefox and Windows Firefox get different results for -1031515200000. Both machines are set to the same timezone.

编辑:Mac Firefox和Windows Firefox获得-1031515200000的不同结果。两台机器都设置为相同的时区。

3 个解决方案

#1


2  

My guess would be platform differences regarding when DST ends and begins. Are the timestamps for current years coming out right?

我的猜测是关于DST何时结束和开始的平台差异。当前年份的时间戳是否正确?

#2


4  

It sounds very much like one of them is giving you ticks since the epoch, and the other is giving you milliseconds since 1970 January 1st in your local time zone... or they're interpreting the data that way. Are all the "wrong" dates in the summer, by any chance? (EDIT: Now I've seen your edit, I see you're thinking along the same lines.)

这听起来非常像其中一个是从纪元开始给你打勾,另一个是你自当地时区1970年1月1日以来的毫秒时间......或者他们正在以这种方式解释数据。在夏天,所有“错误”的日期都是机会吗? (编辑:现在我看到了你的编辑,我看到你在思考同样的问题。)

Could you give us some sample values, and the code you're using in various places? Are you sure that the value itself is wrong, and it's not just a display issue?

你能给我们一些样本值,以及你在不同地方使用的代码吗?你确定价值本身是错的吗,它不只是一个显示问题?

If possible, it would be a good idea to provide instants since the midnight January 1st 1970 UTC. Most platforms give a reasonably simple way of handling that. In .NET, if you use DateTimeOffset instead of DateTime you should avoid at least some of these problems. (In the future, of course, the right solution will be to use Noda Time. But not yet.)

如果可能的话,自UTC 1970年1月1日午夜以来提供瞬间是个好主意。大多数平台提供了一种相当简单的处理方式。在.NET中,如果使用DateTimeOffset而不是DateTime,则应该至少避免其中一些问题。 (当然,将来,正确的解决方案是使用Noda Time。但还没有。)

EDIT: Okay, now you've provided sample data, it doesn't look like there's actually any inconsistency in the instant returned... it's the conversion into the local time that's different. It's very possible that different platforms will have different views of historical time zone information, certainly - some may just have a permanent rule that they assume will have been right and will be right forever, others will know about the various changes involved. I would expect most platforms to take historical changes into account these days, admittedly...

编辑:好的,现在你已经提供了样本数据,它看起来并不像返回的瞬间有任何不一致......它是转换为不同的本地时间。很可能不同的平台对历史时区信息有不同的看法,当然 - 有些人可能只有一个永久性的规则,他们认为这些规则是正确的并且永远是正确的,其他人会知道所涉及的各种变化。我希望大多数平台最近都会考虑历史变化,诚然......

On the iPhone at least, I'd expect you to be able to write code to find out the time zone transitions, and then compare that with what .NET gives via TimeZoneInfo.

至少在iPhone上,我希望你能够编写代码来找出时区转换,然后将它与.NET通过TimeZoneInfo提供的内容进行比较。

What is your application actually doing with this information? Are you interested in it as an instant in time (which can be regarded in different time zones) or just the local time?

您的应用程序实际上对此信息做了什么?您是否及时(可以在不同时区看到)或当地时间对它感兴趣?

#3


0  

I bet it's a timezone thing, where your Mac converts timestamps to your local timezone, which for some timestamp is in daylight savings time (DST), and some are not, causing a one hour time difference compared to UTC, which does not have DST.

我打赌这是一个时区的事情,你的Mac将时间戳转换为你的本地时区,有些时间戳是夏令时(DST),有些不是,导致与UTC相比有一小时的时差,没有DST 。


推荐阅读
  • MATLAB字典学习工具箱SPAMS:稀疏与字典学习的详细介绍、配置及应用实例
    SPAMS(Sparse Modeling Software)是一个强大的开源优化工具箱,专为解决多种稀疏估计问题而设计。该工具箱基于MATLAB,提供了丰富的算法和函数,适用于字典学习、信号处理和机器学习等领域。本文将详细介绍SPAMS的配置方法、核心功能及其在实际应用中的典型案例,帮助用户更好地理解和使用这一工具箱。 ... [详细]
  • 本文深入探讨了CGLIB BeanCopier在Bean对象复制中的应用及其优化技巧。相较于Spring的BeanUtils和Apache的BeanUtils,CGLIB BeanCopier在性能上具有显著优势。通过详细分析其内部机制和使用场景,本文提供了多种优化方法,帮助开发者在实际项目中更高效地利用这一工具。此外,文章还讨论了CGLIB BeanCopier在复杂对象结构和大规模数据处理中的表现,为读者提供了实用的参考和建议。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • packagecom.panchan.tsmese.utils;importjava.lang.reflect.ParameterizedType;importjava.lang. ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文详细介绍了如何使用Python的多进程技术来高效地分块读取超大文件,并将其输出为多个文件。通过这种方式,可以显著提高读取速度和处理效率。 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 深入解析C语言中结构体的内存对齐机制及其优化方法
    为了提高CPU访问效率,C语言中的结构体成员在内存中遵循特定的对齐规则。本文详细解析了这些对齐机制,并探讨了如何通过合理的布局和编译器选项来优化结构体的内存使用,从而提升程序性能。 ... [详细]
  • 在C#编程中,数值结果的格式化展示是提高代码可读性和用户体验的重要手段。本文探讨了多种格式化方法和技巧,如使用格式说明符、自定义格式字符串等,以实现对数值结果的精确控制。通过实例演示,展示了如何灵活运用这些技术来满足不同的展示需求。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 《Intel IA-32 架构软件开发人员手册详尽指南》提供了详尽的 IA-32 架构技术文档,涵盖指令集、系统编程和硬件接口等内容,为软件开发人员提供全面的技术支持和参考。该手册不仅包括详细的架构说明,还提供了丰富的编程示例和最佳实践,帮助开发人员更好地理解和应用 IA-32 架构。 ... [详细]
  • 如何高效启动大数据应用之旅?
    在前一篇文章中,我探讨了大数据的定义及其与数据挖掘的区别。本文将重点介绍如何高效启动大数据应用项目,涵盖关键步骤和最佳实践,帮助读者快速踏上大数据之旅。 ... [详细]
author-avatar
手机用户2502859155
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有