На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Уменьшение строк кода для преобразования даты и времени изменения файла в строку
    Мне хотелось бы в конечном итоге переименовать файлы так, чтобы дата и время изменения файла стояли в начале имени файла. Тогда файлы на диске я могу выстроить по дате. Код для определения даты изменения файла и создания строки с этой датой
    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");
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0243 ]   [ 16 queries used ]   [ Generated: 28.03.24, 11:55 GMT ]