如何将此时间戳功能从php转换为C#?

时间:2015-01-29 19:57:07

标签: c# php

我需要将这个PHP代码转换为C#;

public function timestamp() {
    return intval(microtime(TRUE) * 1000);
}

我理解它与unix时代以来的微秒数相关,但我不明白的是我得到的结果。当我使用此代码运行脚本时;

<?php
echo (microtime(true) * 1000);
echo '<br>';
echo intval(microtime(true) * 1000);
?>

输出;

1422560055622.8
925880646

现在,我可以通过C#代码获得1422560055622.8就好了,但我不明白是如何通过intval将其转换为925880646。我希望intval将其转换为1422560055622或2147483647(是32位整数的最大值)。

更重要的是如何在C#中复制此功能?

编辑:听起来我的服务器上存在PHP问题,因为其他人已经复制了代码而没有相同的结果。我现在能够转换代码,如果有人想提供一个答案,为什么会发生这种情况(因为我仍然很好奇)我会接受它。否则,当我能够时,我会自己回答。

3 个答案:

答案 0 :(得分:2)

它在c#中的功能相同,我希望对你有所帮助

using System;
class StackOverFlow
{
static void Main()
{
    Console.Write(StackOverFlow.TimeStamp());
}
public static decimal TimeStamp()
{
    decimal returner = DateTime.Now.Millisecond * 1000;

    return returner;
}
}

答案 1 :(得分:1)

作为评论后续:这是因为你正在进行32位PHP安装,PHP只是丢弃任何溢出位:

10100101100110111001011111101000101000110 - 1422560055622
           110111001011111101000101000110 - 925880646
        210987654321098765432109876543210
        333222222222211111111110000000000

注意这些位如何很好地排列,并且因为你的“错误的”PHP数字有2个前导0位,所以当数字转换为可显示的字符串时,它们就会被删除。

答案 2 :(得分:0)

尝试round microtime(true)*1000

或者只是简单地将其转换为整数$yourint = (int)(microtime(true)*1000);

但我也尝试了你的代码,并返回了预期的值。也许你正在使用旧版本的php,什么不能处理intval函数中的 float decimal