Изменить даты создания и редактирования файлов

  • Автор темы Автор темы Igorii
  • Дата начала Дата начала

Igorii

Client
Регистрация
21.02.2015
Сообщения
376
Реакции
313
Баллы
63
Нашёл на форуме такой код:
Код:
Развернуть Свернуть Копировать
// Меняем дату создания файла.
System.IO.File.SetCreationTime(@"E:\1.txt", new DateTime(1812, 3, 16, 23, 12, 13));
// Меняем дату последней операции записи в файл
System.IO.File.SetLastWriteTime(@"E:\1.txt", new DateTime(1988, 10, 22, 17, 24, 59));
Подскажите, пожалуйста, как в нём заменить путь к файлу и дату, на переменные?
И возможно ли, что бы время в переменной было в таком формате - 2017-04-02 12:54:15, или нужно преобразовывать в формат, как снипете, через запятые?
 
C#:
Развернуть Свернуть Копировать
// Меняем дату создания файла.
System.IO.File.SetCreationTime(project.Variables["123"].Value, new DateTime(1812, 3, 16, 23, 12, 13));
// Меняем дату последней операции записи в файл
System.IO.File.SetLastWriteTime(project.Variables["123"].Value, new DateTime(1988, 10, 22, 17, 24, 59));
DateTime - это структура, там 11 перегрузок, только в соответствии с ними можно туда заносить параметры даты, а формат для вывода даты можно сделать любой.
 
  • Оценить
Реакции: Igorii
C#:
Развернуть Свернуть Копировать
// Меняем дату создания файла.
System.IO.File.SetCreationTime(project.Variables["123"].Value, new DateTime(1812, 3, 16, 23, 12, 13));
// Меняем дату последней операции записи в файл
System.IO.File.SetLastWriteTime(project.Variables["123"].Value, new DateTime(1988, 10, 22, 17, 24, 59));
DateTime - это структура, там 11 перегрузок, только в соответствии с ними можно туда заносить параметры даты, а формат для вывода даты можно сделать любой.
Спасибо! Только не понял про перегрузки). Так а саму дату возможно сделать переменной?
 
Спасибо! Только не понял про перегрузки). Так а саму дату возможно сделать переменной?
Для использования своего формата тебе нужно вместо new DateTime(1812, 3, 16, 23, 12, 13) использовать метод DateTime.ParseExact
Поищи по слову ParseExact по форуму
 
  • Оценить
Реакции: Igorii
Для использования своего формата тебе нужно вместо new DateTime(1812, 3, 16, 23, 12, 13) использовать метод DateTime.ParseExact
Поищи по слову ParseExact по форуму
Да мне не так важен формат даты, как возможность брать её и путь к файлу из переменных. По разному пробовал делать, но выдаёт ошибки(.
Код:
Развернуть Свернуть Копировать
// Меняем дату последней операции записи в файл
System.IO.File.SetLastWriteTime(project.Variables["file"].Value, new DateTime(project.Variables["DD"].Value));
Пишет:
Компиляция кода Ошибка в действии "CS1502" "Наиболее подходящий перегруженный метод для "System.DateTime.DateTime(long)" имеет несколько недопустимых аргументов". [Строка: 1; Cтолбец: 66]
Компиляция кода Ошибка в действии "CS1503" "Аргумент "1": преобразование типа из "string" в "long" невозможно". [Строка: 1; Cтолбец: 79]

upload_2019-7-25_12-54-50.png
 
Да мне не так важен формат даты, как возможность брать её и путь к файлу из переменных. По разному пробовал делать, но выдаёт ошибки(.
Код:
Развернуть Свернуть Копировать
// Меняем дату последней операции записи в файл
System.IO.File.SetLastWriteTime(project.Variables["file"].Value, new DateTime(project.Variables["DD"].Value));
Пишет:
Компиляция кода Ошибка в действии "CS1502" "Наиболее подходящий перегруженный метод для "System.DateTime.DateTime(long)" имеет несколько недопустимых аргументов". [Строка: 1; Cтолбец: 66]
Компиляция кода Ошибка в действии "CS1503" "Аргумент "1": преобразование типа из "string" в "long" невозможно". [Строка: 1; Cтолбец: 79]

Посмотреть вложение 40539
это так не работает. В коде несколько чисел, а ты передаёшь строку. Для этого и нужно объснить DateTime, что ты передаёшь дату в виде строки в таком-то формате. Для этого и нужен вышеупомянутый метод
 
  • Оценить
Реакции: Igorii и Metrix
Спасибо! Только не понял про перегрузки). Так а саму дату возможно сделать переменной?
Напрямую нельзя вставить переменную проекта в дату. Либо вставлять каждый параметр, например, день с конвертацией в Int32. Либо парсить полную дату из переменной проекта подобным образом
C#:
Развернуть Свернуть Копировать
string date = project.Variables["date"].Value;
DateTime dt = DateTime.ParseExact(date, "d MMM. yyyy г.", new System.Globalization.CultureInfo("ru-RU"));
 
  • Оценить
Реакции: Igorii
@Metrix, @doc, спасибо вам, но похоже, вы мне хотите, объяснить, как человеку уже имеющему какие то знания C#, но к сожалению, их пока нет, совсем((.
Пытаюсь из ваших примеров составить какой-то рабочий код, но ничего не выходит, сыпятся ошибки((.
Не могли бы вы дать полный, рабочий снипет? Пожалуйста!)
 
@Metrix, @doc, спасибо вам, но похоже, вы мне хотите, объяснить, как человеку уже имеющему какие то знания C#, но к сожалению, их пока нет, совсем((.
Пытаюсь из ваших примеров составить какой-то рабочий код, но ничего не выходит, сыпятся ошибки((.
Не могли бы вы дать полный, рабочий снипет? Пожалуйста!)
если в переменной дата вида 2017-04-02 12:54:15
C#:
Развернуть Свернуть Копировать
// Меняем дату создания файла.
System.IO.File.SetCreationTime(project.Variables["имя_переменной_пути_файла"].Value, DateTime.ParseExact(project.Variables["имя_переменной_даты"].Value, "yyyy-MM-dd HH:mm:ss", new System.Globalization.CultureInfo("ru-RU")));
// Меняем дату последней операции записи в файл
System.IO.File.SetLastWriteTime(project.Variables["имя_переменной_пути_файла"].Value, DateTime.ParseExact(project.Variables["имя_переменной_даты"].Value, "yyyy-MM-dd HH:mm:ss", new System.Globalization.CultureInfo("ru-RU")));
 
  • Оценить
Реакции: Greez и Igorii
если в переменной дата вида 2017-04-02 12:54:15
C#:
Развернуть Свернуть Копировать
// Меняем дату создания файла.
System.IO.File.SetCreationTime(project.Variables["имя_переменной_пути_файла"].Value, DateTime.ParseExact(project.Variables["имя_переменной_даты"].Value, "yyyy-MM-dd HH:mm:ss", new System.Globalization.CultureInfo("ru-RU")));
// Меняем дату последней операции записи в файл
System.IO.File.SetLastWriteTime(project.Variables["имя_переменной_пути_файла"].Value, DateTime.ParseExact(project.Variables["имя_переменной_даты"].Value, "yyyy-MM-dd HH:mm:ss", new System.Globalization.CultureInfo("ru-RU")));
Вау! Заработало!!! Спасибо, огромное!!!
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)