热门标签 | 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 。


推荐阅读
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • Linux下安装免费杀毒软件ClamAV及使用方法
    本文介绍了在Linux系统下安装免费杀毒软件ClamAV的方法,并提供了使用该软件更新病毒库和进行病毒扫描的指令参数。同时还提供了官方安装文档和下载地址。 ... [详细]
  • 微软评估和规划(MAP)的工具包介绍及应用实验手册
    本文介绍了微软评估和规划(MAP)的工具包,该工具包是一个无代理工具,旨在简化和精简通过网络范围内的自动发现和评估IT基础设施在多个方案规划进程。工具包支持库存和使用用于SQL Server和Windows Server迁移评估,以及评估服务器的信息最广泛使用微软的技术。此外,工具包还提供了服务器虚拟化方案,以帮助识别未被充分利用的资源和硬件需要成功巩固服务器使用微软的Hyper - V技术规格。 ... [详细]
  • java多线程获取线程返回结果
    我们在使用java多线程编写相关业务代码时,往往有这样一种情况,某个线程依赖于其他线程执行结果。也就是说,我们需要在一个线程中获取另一个线程的信息。可以分为两种情况,一种是轮询,一 ... [详细]
  • python中不同的异常类型,如何进行异常处理?
    一、错误与异常程序中难免会出现错误,而错误分为两种1.语法错误:(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正)2.逻辑错误:(逻辑错误),比如用户输入 ... [详细]
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社区 版权所有