На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: maxim84_, juice
  
> Уменьшение строк кода для преобразования даты и времени изменения файла в строку
Мне хотелось бы в конечном итоге переименовать файлы так, чтобы дата и время изменения файла стояли в начале имени файла. Тогда файлы на диске я могу выстроить по дате. Код для определения даты изменения файла и создания строки с этой датой
ExpandedWrap disabled
    using System;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.IO;
    using System.Collections.Generic; // List
    using System.Collections;
     
    namespace EsEngWord
    {
      class Program
      {
     
        static void ShowMes(string strMes)
        {
          Console.WriteLine(strMes);
          Console.WriteLine("\nПрограмма завершила работу. Нажмите любую клавишу\n");
          Console.ReadKey();
          Environment.Exit(1);
        }
     
        public static void Main()
          {
          string sY, sM, sD, sDt, sH, sMin, sS, sTm, sFile;
          sFile = "IMG_0003.JPG";
          Console.WriteLine(File.GetLastWriteTime(sFile));
          DateTime dt = File.GetLastWriteTime(sFile);
          sY =  dt.Year.ToString();
          sM =  dt.Month.ToString();
          sD = dt.Day.ToString();
          sDt = sY + sM + sD;
          Console.WriteLine(sDt);
          if(sM.Length == 1)
            sM = "0" + sM;
          if (sD.Length == 1)
            sD = "0" + sD;
          sDt = sY + sM + sD;
          sH = dt.Hour.ToString();
          sMin = dt.Minute.ToString();
          sS = dt.Second.ToString();
          sTm = sH + sMin + sS;
          Console.WriteLine(sTm);
          if (sH.Length == 1)
            sH = "0" + sH;
          if (sMin.Length == 1)
            sMin = "0" + sMin;
          if (sS.Length == 1)
            sS = "0" + sS;
          sTm = sH + sMin + sS;
          string sDtTm = sDt + "_" + sTm;
          Console.WriteLine(sDtTm);
          ShowMes("");
       }
      } // class
    } //  namespace
работает, но очень много строк кода. Я имею в виду не тестовый вывод на консоль, а проверку строк (элементов даты и времени изменения файла) для добавления в случае необходимости 0. Можно ли уменьшить код для проведения проверок строки и добавления 0 в случает строки с одним символом? Проект разместил по ссылке https://yadi.sk/d/p3EselRjPGXb_Q - из-за картинки он занимает 2,5 Мб.
Сообщение отредактировано: tumanovalex -
Ну наверняка должен существовать какой-то аналог printf'а:
ExpandedWrap disabled
    sprintf( buf, "%04d-%02d-%02d_%s", dt.Year, dt.Month, dt.Day, stroka);
дабы не 6 раз мучаться с переводом в строку, а 1 раз.
Оказывается, все очень просто:
ExpandedWrap disabled
    DateTime dt = File.GetLastWriteTime(sFile);
    string newDateString = dt.ToString("yyyyMMdd_HHmmss");
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,0760 ]   [ 20 queries used ]   [ Generated: 26.01.20, 04:40 GMT ]