Microtime в C#

Удивительное дело, но в 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.

Поблагодарить автора

Оставить комментарий

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>