首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Java和PHP之间的时代不同?

问为什么Java和PHP之间的时代不同?
EN

Stack Overflow用户
提问于 2016-01-11 16:47:00
回答 1查看 251关注 0票数 0

因此,我正在将代码从PHP移植到Java。部分代码有一个时间敏感的散列算法,其中当前Unix时间戳充当种子。我遇到的问题是,我的移植代码在这两种语言中给出了不同的答案。我怀疑这可能是在实现或其他方面的细微差别。

我想知道这个问题是否是一个相当模糊的问题,比如this。尽管如此,任何帮助都将不胜感激。

这是我用Java编写的代码。

代码语言:javascript
复制
private static int generateB() {
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", Locale.US);

    Date start;
    Date now;
    try {
        start = sdf.parse("01/01/1970");
        now = new Date();
    } catch (ParseException e) {
        return 402890;
    }
    long diff = now.getTime() - start.getTime();
    long hours = diff / (60 * 60 * 1000) % 24;
    long days = diff / (24 * 60 * 60 * 1000);
    return (int) (hours + days * 24);
}

下面是PHP代码:

代码语言:javascript
复制
 /**
 * Generate "b" parameter
 * The number of hours elapsed, since 1st of January 1970
 *
 * @return int
 */
private function generateB()
{
    $start = new \DateTime('1970-01-01');
    $now = new \DateTime('now');
    $diff = $now->diff($start);
    return $diff->h + ($diff->days * 24);
}

然而,他们返回不同的结果,准确地说是3小时。

在写这篇文章的时候。PHP返回403472,而Java返回403475。另外,如果我使用System.currentTimeMillis(),我将得到403480。

所以我的问题是,为什么会有什么不同呢?我的意思是,减去3可以解决我的问题,但我只是好奇未来的参考,为什么差异存在。注意:为了测试目的,我正在通过PHP运行PHP。

EN

回答 1

Stack Overflow用户

发布于 2016-01-11 17:00:02

从你的报价判断

在写这篇文章的时候。PHP返回403472,而Java返回403475。另外,如果我使用System.currentTimeMillis(),我将得到403480。

这一切看起来都很好-- PHP和Java之间有3秒,在此基础上还有5秒。我想这大概就是你转换进程和运行测试所花费的时间吧?

代码语言:javascript
复制
php > echo date('Y-m-d H:i:s', 403472);
1970-01-05 17:04:32
php > echo date('Y-m-d H:i:s', 403475);
1970-01-05 17:04:35
php > echo date('Y-m-d H:i:s', 403480);
1970-01-05 17:04:40
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34726825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档