Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Скачивание файла, где часть URL это дата посл. изменения лок. файла (http://forum.oszone.net/showthread.php?t=183354)

Efsey 19-08-2010 13:21 1477193

Скачивание файла, где часть URL это дата посл. изменения лок. файла
 
В URL входит дата последнего изменения файла типа MM-DD-YYYY, и сегодняшняя дата в том же формата. Всё в С#

Пример -- http:/ /www.mysite.com/ index.php?id=12345&ldate =08-10-2010&sdate= 08-19-2010&prochayahren

На данный момент URL ввожу полностью вручную.

Как организовать проверку локального файла на дату изменения и в случаи отсутствия файла дать выбрать самому вручную или календарь

RUVATA 19-08-2010 16:39 1477361

Не пишу на С#... но пишу на vb.Net
т.к. пространства имен у нас все равно одинаковые тебе наверное поможет:

Цитата:

Цитата Efsey
Как организовать проверку локального файла на дату изменения »

Ссылка System

System.IO.File.GetCreationTime ("файл")
возвращает дату последнего изменения/создания

Цитата:

Цитата Efsey
и в случаи отсутствия файла дать выбрать самому вручную или календарь »

System.IO.File.Exist("файл")
проверка существования файла
возвращает True/False

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

LilLoco 19-08-2010 18:41 1477452

На C# абсолютно все тоже самое, в данном случае, что и на vb.Net! Только вот вроде как метод GetCreationTime возвращает не только дату, но и время?!?!?!

Efsey 19-08-2010 18:45 1477454

В том то и проблема, что нужен определенный формат даты вида ММ-ДД-ГГГГ

котвася 19-08-2010 19:19 1477479

может это поможет:
Код:

        static void Main(string[] args)
        {
            DirectoryInfo dir = new DirectoryInfo(@"c:\windows\web\wallpaper");

            FileInfo[] imageFiles = dir.GetFiles("*.jpg");
            Console.WriteLine("Найдено {0} *.jpg files\n", imageFiles.Length)

            foreach (FileInfo f in imageFiles)
            {
                Console.WriteLine("****************************************");
                Console.WriteLine("Имя файла: {0}", f.Name);
                Console.WriteLine("Размер файла: {0}", f.Length);
                Console.WriteLine("Дата: {0}", f.CreationTime);
                Console.WriteLine("****************************************");
            }
            Console.ReadKey();
       
        }
    }

для сервера:
Код:

        string directory = Server.MapPath(@"catalog/catolog/");
        DirectoryInfo dir = new DirectoryInfo(directory);


Efsey 20-08-2010 07:08 1477731

Тут, наверно, лучше использовать f.LastWriteTime.

Осталось решить как вытащить дату и перевести в необходимый формат

RUVATA 20-08-2010 09:27 1477781

Есть вот такая загагулина...

FormatDateTime(переменная в формате Date, *DateFormat.*)

Например
FormatDateTime(Date.Now, DateFormat.ShortDate)
возвращает мне строку: ДД.MM.ГГГГ от Date.Now

...у DateFormat 4 метода:

короткая сист дата
длинная систдата
короткое сист время
длинное сист время

по умолчанию короткая сист дата ДД.ММ.ГГГГ
так что смотри что выставлено, выставляй как надо и наслаждайСО

LilLoco 20-08-2010 14:41 1478004

Ну можно и так выдернуть :

Код:

DateTime DT = System.IO.File.GetLastWriteTime("имя файла");
string FormatDate = DT.Month + "-" + DT.Day + "-" + DT.Year;

Результатом и получишь дату в формате : MM-ДД-ГГГГ

Efsey 23-08-2010 09:08 1479770

Так с датой файла разобрался. Всем спасибо)

Второй датой как выяснилось должна быть суббота текущей недели и в том же формате. Кто что может подсказать?

В msdn нашел только это:

Код:

static void Main(string[] args)
    {
      Console.WriteLine(GetMonday(DateTime.Today));
    }
    static DateTime GetMonday(DateTime date)
    {
      while(date.DayOfWeek != System.DayOfWeek.Monday)
      {
        date = date.AddDays(-1);
      }
      return date;
    }


Admiral 23-08-2010 19:48 1480250

На VB.NET могу подсказать
Код:

    Shared Function GetDayOfCurrentWeak(ByVal MyDate As DateTime, ByVal NeadDay As DayOfWeek) As DateTime

        If MyDate.DayOfWeek = NeadDay Then
            Return MyDate
        End If

        If MyDate.DayOfWeek = DayOfWeek.Sunday Then MyDate = MyDate.AddDays(-1)

        While MyDate.DayOfWeek <> DayOfWeek.Sunday
            If MyDate.DayOfWeek = NeadDay Then Return MyDate
            MyDate = MyDate.AddDays(-1)
        End While

        MyDate = MyDate.AddDays(+1)

        While MyDate.DayOfWeek <> DayOfWeek.Sunday
            If MyDate.DayOfWeek = NeadDay Then Return MyDate
            MyDate = MyDate.AddDays(+1)
        End While

    End Function

Пример использования Console.WriteLine(GetDayOfCurrentWeak(DateTime.Today, DayOfWeek.Saturday))

Идея в следующем, функция проверяет не тот ли день запрашивается при вызове что и день указанной даты, если тот то сразу возвращает его же.
Если нет идёт проверка на воскресенье, дабы оставаться в пределах одной недели. Дата оттягивается на субботу. Если не воскресенье, то такого не происходит, и дата будет оттягиваться до ближайшего воскресенья с постоянной проверкой на требуемый день в недели. Если его не найдено и день уже приблизился к воскресенью, проверка начинает работать к следующему воскресенью и день таки будет найден.

Ответ осталось отпарсить до требуемого MM-ДД-ГГГГ, убрав время.


Время: 17:00.

Время: 17:00.
© OSzone.net 2001-