Войти

Показать полную графическую версию : [решено] Скачивание файла, где часть URL это дата посл. изменения лок. файла


Efsey
19-08-2010, 13:21
В 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
Не пишу на С#... но пишу на vb.Net
т.к. пространства имен у нас все равно одинаковые тебе наверное поможет:

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

Ссылка System

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

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

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

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

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

Efsey
19-08-2010, 18:45
В том то и проблема, что нужен определенный формат даты вида ММ-ДД-ГГГГ

котвася
19-08-2010, 19:19
может это поможет:

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
Тут, наверно, лучше использовать f.LastWriteTime.

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

RUVATA
20-08-2010, 09:27
Есть вот такая загагулина...

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

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

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

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

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

LilLoco
20-08-2010, 14:41
Ну можно и так выдернуть :


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

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

Efsey
23-08-2010, 09:08
Так с датой файла разобрался. Всем спасибо)

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

В 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
На 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-ДД-ГГГГ, убрав время.




© OSzone.net 2001-2012