Microtime в C#

Категория: C# Комментариев: 0

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

Автор: Кто-то   @   24 февраля 2010 Комментариев: 0
Метки : , ,

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

Webmoney Z163628999150, R617151845974

Комментариев: 0

Комментариев к этой записи поке нет. Ваш комментарий будет первым.
оставить комментарий

Предыдущая запись
«
Следующая запись
»