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

Igorii

Client
Регистрация
21.02.2015
Сообщения
369
Благодарностей
292
Баллы
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, или нужно преобразовывать в формат, как снипете, через запятые?
 

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
271
Баллы
63
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

Igorii

Client
Регистрация
21.02.2015
Сообщения
369
Благодарностей
292
Баллы
63
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 перегрузок, только в соответствии с ними можно туда заносить параметры даты, а формат для вывода даты можно сделать любой.
Спасибо! Только не понял про перегрузки). Так а саму дату возможно сделать переменной?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Спасибо! Только не понял про перегрузки). Так а саму дату возможно сделать переменной?
Для использования своего формата тебе нужно вместо new DateTime(1812, 3, 16, 23, 12, 13) использовать метод DateTime.ParseExact
Поищи по слову ParseExact по форуму
 
  • Спасибо
Реакции: Igorii

Igorii

Client
Регистрация
21.02.2015
Сообщения
369
Благодарностей
292
Баллы
63
Для использования своего формата тебе нужно вместо 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
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Да мне не так важен формат даты, как возможность брать её и путь к файлу из переменных. По разному пробовал делать, но выдаёт ошибки(.
Код:
// Меняем дату последней операции записи в файл
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

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
271
Баллы
63
Спасибо! Только не понял про перегрузки). Так а саму дату возможно сделать переменной?
Напрямую нельзя вставить переменную проекта в дату. Либо вставлять каждый параметр, например, день с конвертацией в Int32. Либо парсить полную дату из переменной проекта подобным образом
C#:
string date = project.Variables["date"].Value;
DateTime dt = DateTime.ParseExact(date, "d MMM. yyyy г.", new System.Globalization.CultureInfo("ru-RU"));
 
  • Спасибо
Реакции: Igorii

Igorii

Client
Регистрация
21.02.2015
Сообщения
369
Благодарностей
292
Баллы
63
@Metrix, @doc, спасибо вам, но похоже, вы мне хотите, объяснить, как человеку уже имеющему какие то знания C#, но к сожалению, их пока нет, совсем((.
Пытаюсь из ваших примеров составить какой-то рабочий код, но ничего не выходит, сыпятся ошибки((.
Не могли бы вы дать полный, рабочий снипет? Пожалуйста!)
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
@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

Igorii

Client
Регистрация
21.02.2015
Сообщения
369
Благодарностей
292
Баллы
63
если в переменной дата вида 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")));
Вау! Заработало!!! Спасибо, огромное!!!
 

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