Отметка времени в Windows аналогична отметке времени Unix и манипуляциям с файлами - PullRequest
1 голос
/ 21 апреля 2010

Мне известно, что у linux есть информация о метках времени, доступная для прог. Langs. что очень удобно.

Я занимаюсь разработкой программы, и мне нужно добавить дату и время к созданному файлу. и это должно быть уникальным.

Позже я хочу проанализировать файлы, но я хочу проанализировать только самый последний.

Есть ли такая опция в .net, как отметка времени в * nix системах?

Есть ли примеры?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 21 апреля 2010

Если вам нужны временные метки из файлов, посмотрите на класс FileInfo. Если вы хотите добавить метку времени UNIX к файлу (возможно, к имени файла или, как вы сказали, добавленный в конец), эта функция возвращает вам метку времени UNIX:

public static int UnixTimestamp()
{
    var utcEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
    var utcNow = DateTime.UtcNow;
    var span = utcNow - utcEpoch;
    return (int)span.TotalSeconds;
}
2 голосов
/ 21 апреля 2010

«Уникальные» и временные метки на основе имен файлов противоречивы. Он разваливается, когда машина становится быстрее. Обходные пути, которые пытаются проверить, существует ли уже файл, распадаются, когда выполняется более одного экземпляра вашей программы. Только Path.GetTempFileName () может гарантировать абсолютно уникальное имя. Используйте FileInfo.CreationTimeUtc, чтобы найти последний.

2 голосов
/ 21 апреля 2010

Вы можете использовать свойство Ticks структуры DateTime .Он не совместим с меткой времени UNIX, но его можно использовать для возврата long (Int64), который представляет дату и время с точностью до одной десятой миллионной доли секунды.Например,

DateTime.Now.Ticks

Во время написания возвращает значение 634074617762026300

. Вы можете конвертировать тики обратно в DateTime в конструкторе.Например,

DateTime date = new DateTime(634074617762026300);
...