Лучший способ построить дату и время с большей точностью, чем миллисекунды - PullRequest
0 голосов
/ 07 октября 2009

Я только что прошел неожиданно извилистый процесс для определения даты и времени.

Исходные данные имеют лучшую точность, чем миллисекунды .

Я закончил тем, что построил промежуточное значение даты-времени с точностью до секунды, считав его значение в тиках (от 10 000 до миллисекунды), настроив тики, затем создав дату-время, которое я на самом деле хотел .

Я ожидал, что конструкторы, которые удваиваются секунд, удваиваются , и это занимает строковую дату / время спецификатор формата . Кажется, ни то, ни другое не существует.

У кого-нибудь есть хороший альтернативный подход?

Ответы [ 2 ]

4 голосов
/ 07 октября 2009

Не существует прямого способа создания экземпляра DateTime, основанного на долях секунды. Самое близкое, что вы можете получить, как вы обнаружили, это использовать галочки. Подобная функция должна по крайней мере избавить вас от необходимости создавать несколько DateTime с в каждом случае.

public DateTime DateTimeFromFractionalSeconds(int year, int month, int day, int hour, int minute, double seconds)
{
    return new DateTime(year, month, day, hour, minute).AddTicks((long)(seconds * 1000000000));
}

Вы правы, что дизайнеры могли включить такой конструктор. Однако класс DateTime основан не на секундах больше, чем на минутах. Я понимаю, что вам нужны дробные секунды, но можете ли вы действительно доказать, что дробные секунды были бы более законными, чем дробные минуты? Или часы? Класс DateTime основан на тиках. Это наименьшая неделимая единица измерения, с которой она имеет дело, поэтому самый точный конструктор представлен в тиках.

1 голос
/ 07 октября 2009

Если вы хотите использовать эту дату время от времени, сколько времени потребуется для запуска вашего кода, вам будет намного лучше использовать класс Секундомер Секундомер. Он использует высокоточный таймер, который недоступен объекту DateTime. Если вы не определяете, сколько времени занимает промежуток между двумя точками, а просто хотите, чтобы текущее время было более точным, чем миллисекунды, я думаю, что вы идете немного за борт и вам может не понадобиться такая точность, или что дополнительная точность не имеет смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...