如何将此时间戳函数从 php 转换为 C#

  • 本文关键字:php 转换 函数 时间戳 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存在问题,因为其他人已经复制了代码并且没有相同的结果。 我现在能够转换代码,如果有人想提供为什么会发生这种情况的答案(因为我仍然很好奇),我会接受它。 否则我会在有能力的时候自己回答。

它是 C# 中的相同函数,我希望对您有所帮助

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

作为评论跟进: 这是因为您使用的是 32 位 PHP 安装,而 PHP 只是删除了任何溢出位:

10100101100110111001011111101000101000110 - 1422560055622
           110111001011111101000101000110 - 925880646
        210987654321098765432109876543210
        333222222222211111111110000000000

请注意位如何很好地排列,并且由于您的"错误"PHP数字有2个前导0位,因此当数字转换为可显示的字符串时,它们会被简单地删除。

尝试使用round您的microtime(true)*1000

或者干脆将其转换为整数$yourint = (int)(microtime(true)*1000);

但我也尝试了你的代码,并返回了预期的值。也许您使用的是旧版本的 php,它无法intval函数中处理浮点数或十进制