Удивительное дело, но в C# нет встроенной функции для получения микротайма (для тех, кто в танке — количества микросекунд от 1 января 1970 года). Свойство DataTime.Ticks вместо него возвращает какую-то сакральную единицу, представляющую количество юнитов времени от первого января 0001 года >_<
Народные умельцы исправили положение сделали функцию для получения microtime:
/// <summary>
/// Diese Funktion ist ?quivalent mit der PHP-Funktion microtime()
/// </summary>
/// <returns></returns>
private int getMicroTime()
{
TimeSpan difference = (DateTime.UtcNow - new DateTime(1970, 1, 1));
return (int)(difference.Ticks / 10);
}
Все-бы хорошо, но если использовать время не в UTC, то можно получить очень странный непонятный баг.
Нижеприведенная функция работает вполне нормально и со временем не в UTC:
public int GetEpochTime()
{
DateTime dtCurTime = DateTime.Now;
DateTime dtEpochStartTime = Convert.ToDateTime("1/1/1970 8:00:00 AM");
TimeSpan ts = dtCurTime.Subtract(dtEpochStartTime);
int epochtime;
epochtime = ((((((ts.Days * 24) + ts.Hours) * 60) + ts.Minutes) * 60) + ts.Seconds);
return epochtime;
}
Сие чудо работает как в MS Visual Studio, так и в MonoDevelop.
|
|
Webmoney Z163628999150, R617151845974
|