Ответ 1
Разрешение DateTime.Now
зависит от вашего системного таймера (~ 10 мс в текущей ОС Windows)... поэтому он дает то же самое (оно больше не считается конечным).
В моем приложении я генерирую файлы случайным образом. Для обеспечения уникального наименования я попытался использовать nano секунд с 1.1.1970:
long time = DateTime.Now.Ticks;
String fileName = Convert.ToString(time);
Console.WriteLine(fileName);
Теперь я заметил что-то странное. Почему это так? Я имею в виду, почему последние 4 числа всегда одинаковы? Я могу использовать это как имя файла, это не проблема, но мне просто интересно об этом.
634292263478068039
634292263512888039
634292263541368039
634292263603448039
634292263680078039
Разрешение DateTime.Now
зависит от вашего системного таймера (~ 10 мс в текущей ОС Windows)... поэтому он дает то же самое (оно больше не считается конечным).
На самом деле я не ответил на ваш вопрос, но подумал, что я обманул бы вашу общую цель.
Уже существует способ генерации случайных имен файлов в .NET.
См. System.Path.GetTempFileName и GetRandomFileName.
В качестве альтернативы общепринятой практикой является использование GUID для обозначения случайных файлов.
Вы можете получить миллисекунды с 01.01.1970, используя такой код:
private static DateTime JanFirst1970 = new DateTime(1970, 1, 1);
public static long getTime()
{
return (long)((DateTime.Now.ToUniversalTime() - JanFirst1970).TotalMilliseconds + 0.5);
}
преобразовать текущую дату и время в имя файла, чтобы сохранить файлы, которые вы можете использовать
DateTime.Now.ToFileTime();
это должно решить вашу цель
У меня была аналогичная проблема.
Я также посмотрел бы на этот ответ: Есть ли доступный для DateTime объект с разрешением (microsecond, nanosecond) для CLR?.
Примерно на полпути вниз ответ от Robert P с некоторыми функциями расширения, которые я нашел полезными.