Показать полную графическую версию : [решено] Скачивание файла, где часть URL это дата посл. изменения лок. файла
В URL входит дата последнего изменения файла типа MM-DD-YYYY, и сегодняшняя дата в том же формата. Всё в С#
Пример -- http:/ /www.mysite.com/ index.php?id=12345&ldate =08-10-2010&sdate= 08-19-2010&prochayahren
На данный момент URL ввожу полностью вручную.
Как организовать проверку локального файла на дату изменения и в случаи отсутствия файла дать выбрать самому вручную или календарь
Не пишу на С#... но пишу на vb.Net
т.к. пространства имен у нас все равно одинаковые тебе наверное поможет:
Как организовать проверку локального файла на дату изменения »
Ссылка System
System.IO.File.GetCreationTime ("файл")
возвращает дату последнего изменения/создания
и в случаи отсутствия файла дать выбрать самому вручную или календарь »
System.IO.File.Exist("файл")
проверка существования файла
возвращает True/False
ну а выбрать самому это уж... как у тя фантазия... хочешь форму слатай хочешь подключай сист.диалоги
На C# абсолютно все тоже самое, в данном случае, что и на vb.Net! Только вот вроде как метод GetCreationTime возвращает не только дату, но и время?!?!?!
В том то и проблема, что нужен определенный формат даты вида ММ-ДД-ГГГГ
может это поможет:
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);
Тут, наверно, лучше использовать f.LastWriteTime.
Осталось решить как вытащить дату и перевести в необходимый формат
Есть вот такая загагулина...
FormatDateTime(переменная в формате Date, *DateFormat.*)
Например
FormatDateTime(Date.Now, DateFormat.ShortDate)
возвращает мне строку: ДД.MM.ГГГГ от Date.Now
...у DateFormat 4 метода:
короткая сист дата
длинная систдата
короткое сист время
длинное сист время
по умолчанию короткая сист дата ДД.ММ.ГГГГ
так что смотри что выставлено, выставляй как надо и наслаждайСО
Ну можно и так выдернуть :
DateTime DT = System.IO.File.GetLastWriteTime("имя файла");
string FormatDate = DT.Month + "-" + DT.Day + "-" + DT.Year;
Результатом и получишь дату в формате : MM-ДД-ГГГГ
Так с датой файла разобрался. Всем спасибо)
Второй датой как выяснилось должна быть суббота текущей недели и в том же формате. Кто что может подсказать?
В 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;
}
На 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.