C#中的PHP mktime()和microtime()等效

dro*_*ath 4 c#

在C#中,PHP mktime和microtime相当于什么?

Ant*_*lev 8

这是为了mktime(你必须验证时区):

static DateTime ConvertFromUnixTimestamp(double timestamp)
{
    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    return origin.AddSeconds(timestamp);
}

static int ConvertToUnixTimestamp(DateTime date)
{
    DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
    TimeSpan diff = date - origin;
    return (int)diff.TotalSeconds;
}
Run Code Online (Sandbox Code Playgroud)

microtime基本相同,但你不必投int.


Tho*_*que 6

没有直接的等价物,但它们可以轻松实现......由于UNIX时间戳是自1970年1月1日以来的秒数,因此很容易计算:

public readonly DateTime UnixEpoch = new DateTime(1970, 1, 1);

// equivalent to PHP mktime :
public int GetUnixTimestamp(DateTime dt)
{
    TimeSpan span = dt - UnixEpoch;
    return (int)span.TotalSeconds;
}
Run Code Online (Sandbox Code Playgroud)

对于microtime,您可以使用DateTime.Tick属性(1 tick = 100纳秒,因此10 ticks = 1微秒)