ActionScript 3.0 + 计算两个日期之间的时间跨度?
在ActionScript 3.0中,是否有一种自动方法来计算两个指定日期之间的天数、小时数、分钟数和秒数?
基本上,我需要的是 .NET Timespan 类的 ActionScript 等效项。
任何想法?
In ActionScript 3.0, is there an automatic way to calculate the number of days, hours, minutes and seconds between two specified dates?
Basicly, what I need is the ActionScript equivalent of the .NET Timespan class.
Any idea?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
我创建了一个 ActionScript TimeSpan 类,它具有与 System.TimeSpan 类似的 API 来填补这一空白,但由于缺乏运算符重载,因此存在差异。 您可以像这样使用它:
下面是该类的代码(很抱歉这篇大文章 - 我不会包含单元测试;)
I created an ActionScript TimeSpan class with a similar API to System.TimeSpan to fill that void, but there are differences due to the lack of operator overloading. You can use it like so:
Below is the code for the class (sorry for the big post - I won't include the Unit Tests ;)
您可以将两个日期时间转换为自纪元以来的毫秒数,执行数学运算,然后使用所得的毫秒数来计算这些更高的时间跨度数字。
LiveDocs 对于此类事情也很有用。 抱歉,如果 ActionScript 有点不对劲,但已经有一段时间了。
如果您正在进行大量此类数学运算,我还建议创建一组可以执行这些操作的静态类方法。 遗憾的是,标准 API 中并不真正存在这种基本功能。
You can covert the two date times into milliseconds since the epoch, perform your math and then use the resultant milliseconds to calculate these higher timespan numbers.
The LiveDocs are useful for this type of thing too. Sorry if the ActionScript is a bit off, but it has been a while.
I'd also recommend creating a set of static class methods that can perform these operations if you're doing a lot of this type of math. Sadly, this basic functionality doesn't really exist in the standard APIs.
对于某些像这样的单一功能,我最好......
[摘自 Richard Szalay 的代码]
for some a single function like this my be preferable...
[condensed from Richard Szalay's code]
没有自动的方法可以做到这一点。 使用提供的类可以实现的最佳效果是获取 date1.time 和 date2.time,以给出两个数字自 1970 年 1 月 1 日以来的毫秒数。 然后您可以计算出它们之间的毫秒数。 通过一些基本的数学,你可以推导出秒、小时、天等。
There is no automatic way of doing this. The best you can achieve with the supplied classes is to fetch date1.time and date2.time, to give the number of milliseconds since 1st Jan 1970 for two numbers. You can then work out the number of milliseconds between them. With some basic maths, you can then derive the seconds, hours, days etc.
为了准确起见,Russell 的上述帖子是正确的,直到您达到 25 天的差异,然后该数字对于 int 变量来说太大了。
因此声明 millisecondDifference:Number;
记录的 getTime() 和 valueOf() 之间可能存在一些差异,但实际上我看不到它
For the sake of accuracy the above post by Russell is correct until you get to 25 days difference, then the number becomes too large for the int variable.
Therefore declare the millisecondDifference:Number;
There may be some difference between the documented getTime() and valueOf(), but in effect I can't see it
或者
or
ArgumentValidation 是 Mr Szalays 的另一个类,它会进行一些检查,以确保每个方法都有正确的值来执行其任务,而不会引发无法识别的错误。 它们对于让 TimeSpan 类工作并不是必需的,因此您只需将它们注释掉,该类就会正常工作。
Rich 可能会在这里发布参数验证类,这非常方便,但我会把它留给他;P
ArgumentValidation is another class of Mr Szalays that does some checks to make sure each method has the right values to perform it's tasks without throwing unrecognisable errors. They are non-essential to get the TimeSpan class working so you could just comment them out and the class will work correctly.
Rich may post the Argument validation class on here as well as it's very handy but i'll leave that down to him ;P