Current在Java里面_在C#中相当于Java System.currentTimeMillis()

替代:

private static readonly DateTime Jan1st1970 = new DateTime (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); public static long CurrentTimeMillis() { return (long) (DateTime.UtcNow - Jan1st1970).TotalMilliseconds; }

Java中一个常见的习惯用法是使用currentTimeMillis()来进行计时或调度,而对1970年以来的实际毫秒数不感兴趣,而是计算一些相对值,并将currentTimeMillis()后续调用与该值进行比较。

如果这就是你正在寻找的,C#等价物是Environment.TickCount 。

我们也可以稍微想一下,并将其作为扩展方法,以便挂起DateTime类:

public static class DateTimeExtensions { private static DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); public static long currentTimeMillis(this DateTime d) { return (long) ((DateTime.UtcNow - Jan1st1970).TotalMilliseconds); } }

如果您对TIMING感兴趣,请添加对System.Diagnostics的引用并使用秒表。

例如:

var sw = Stopwatch.StartNew(); ... var elapsedStage1 = sw.ElapsedMilliseconds; ... var elapsedStage2 = sw.ElapsedMilliseconds; ... sw.Stop();

java中的System.currentTimeMillis()返回从1970年1月1日开始的以毫秒为单位的当前时间

C#那将是

public static double GetCurrentMilli() { DateTime Jan1970 = new DateTime(1970, 1, 1, 0, 0,0,DateTimeKind.Utc); TimeSpan javaSpan = DateTime.UtcNow - Jan1970; return javaSpan.TotalMilliseconds; }

编辑:提出了utcbuild议:)

这是一个简单的方法来近似Unix的时间戳。 使用UTC更接近于unix的概念,你需要从double到long 。

TimeSpan ts = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)); long millis = (long)ts.TotalMilliseconds; Console.WriteLine("millis={0}", millis);

打印:

millis=1226674125796

该框架不包括自1970年以来的旧秒(或毫秒)。最接近的是DateTime.Ticks,它是从0001年1月1日起的100纳秒数。

我只考虑如何实现你一直在努力的最直接的方法如下:

DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond

我知道问题要求等价,但因为我使用这两个相同的任务,我扔在GetTickCount 。 我可能怀旧,但是System.currentTimeMillis()和GetTickCount()是我用来获取滴答的唯一的。

[DllImport("kernel32.dll")] static extern uint GetTickCount(); // call uint ticks = GetTickCount();

如果你想在不同的进程间比较不同的语言(Java,C,C#),GNU / Linux和Windows(至less七个):

C#:

private static long nanoTime() { long nano = 10000L * Stopwatch.GetTimestamp(); nano /= TimeSpan.TicksPerMillisecond; nano *= 100L; return nano; }

Java的:

java.lang.System.nanoTime();

C GNU / Linux:

static int64_t hpms_nano() { struct timespec t; clock_gettime( CLOCK_MONOTONIC, &t ); int64_t nano = t.tv_sec; nano *= 1000; nano *= 1000; nano *= 1000; nano += t.tv_nsec; return nano; }

C Windows:

static int64_t hpms_nano() { static LARGE_INTEGER ticksPerSecond; if( ticksPerSecond.QuadPart == 0 ) { QueryPerformanceFrequency( &ticksPerSecond ); } LARGE_INTEGER ticks; QueryPerformanceCounter( &ticks ); uint64_t nano = ( 1000*1000*10UL * ticks.QuadPart ) / ticksPerSecond.QuadPart; nano *= 100UL; return nano; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值