2009-06-30 2 views

ответ

6

Там нет прямых эквивалентов, но они могут быть легко реализованы ... Поскольку метки времени UNIX это количество секунд, прошедших с 1 января 1970 года, это легко вычислить:

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; 
} 

Для микропоры, вы можете используйте свойство DateTime.Tick (1 тик = 100 наносекунд, поэтому 10 тиков = 1 микросекунда)

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; 
} 

microtime в основном то же самое, но вы не должны отбрасывать в int.