purebasic.info

PureBasic forum
Текущее время: Чт июн 20, 2019 3:17 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: Чт мар 12, 2015 6:18 pm 
Не в сети
доцент

Зарегистрирован: Ср сен 12, 2012 5:04 am
Сообщений: 56
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Всем привет!
Потребовалось узнать дату изменения (создания, последнего доступа) к папке. Не получается. В доках не нашел информации, поиском тоже.
Код ниже:
Код:
1
2
3
4
5
6
7
8
date_file=GetFileDate("D:\test_date\file.txt", #PB_Date_Accessed)
Debug date_file
Debug FormatDate("%yyyy-%mm-%dd %hh:%ii:%ss", date_file)
date_dir=GetFileDate("D:\test_date\", #PB_Date_Accessed)
Debug date_dir
Debug FormatDate("%yyyy-%mm-%dd %hh:%ii:%ss", date_dir)
MessageRequester("","date_file - "+FormatDate("%yyyy-%mm-%dd %hh:%ii:%ss", date_file)+Chr(10)+"date_dir - "+FormatDate("%yyyy-%mm-%dd %hh:%ii:%ss", date_dir))
;



на выходе выдаёт вот что:
---------------------------

---------------------------
date_file - 2015-03-12 20:31:25
date_dir - 1970-01-01 00:00:00
---------------------------
ОК
---------------------------
Кто-нибудь может помочь?
И как можно узнать текущее время до миллисекунд?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт мар 12, 2015 6:50 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 71 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Цитата:
date_dir=GetFileDate("D:\test_date\", #PB_Date_Accessed)
Обратный слэш на конце убери. Должно быть так:
Код:
1
date_dir=GetFileDate("D:\test_date", #PB_Date_Accessed)



Цитата:
И как можно узнать текущее время до миллисекунд?

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Structure Time 
  wYear.w
  wMonth.w
  wDayOfWeek.w
  wDay.w
  wHour.w
  wMinute.w
  wSecond.w
  wMilliseconds.w
EndStructure
 
Dim t.Time(0)
 
GetSystemTime_(t(0));
 
Debug "Текущее время : " + Str(t(0)\wHour) + ":" + Str(t(0)\wMinute) + ":" + Str(t(0)\wSecond) + "." + Str(t(0)\wMilliseconds)


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Чт мар 12, 2015 7:09 pm 
Не в сети
доцент

Зарегистрирован: Ср сен 12, 2012 5:04 am
Сообщений: 56
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Никита Однороб, спасибо!
Слеш убирать вроде пробовал, хотя может и показалось!
А вот с миллисекундами помог - надо логи писать точнее, спасибо!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт мар 12, 2019 9:58 am 
Не в сети
док

Зарегистрирован: Пн сен 27, 2010 10:30 am
Сообщений: 149
Откуда: Уренгой
Благодарил (а): 0 раз.
Поблагодарили: 10 раз.
Пункты репутации: 5
Подниму тему вопросом: как изменить дату создания и др. у папки? SetFileDate(file.s, #PB_Date_Created ,Date_Created) не работает, хотя у файлов меняет. Причем, получать время получается, а вот поменять - никак. Есть рецепт?
П.С. Атрибуты поменять удается.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вт мар 12, 2019 11:10 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 304
Благодарил (а): 14 раз.
Поблагодарили: 33 раз.
Пункты репутации: 2
КЭС писал(а):
Есть рецепт?
Примерно так, только как заполнить структуру я не разобрался.
Код:
1
2
3
4
5
6
7
8
9
10
filetime.FILETIME
filetime\dwHighDateTime = ?
filetime\dwLowDateTime = ?
FileName.s = "test"
 
hFile.l = CreateFile_(@FileName, #GENERIC_WRITE, #FILE_SHARE_WRITE, 0, #OPEN_EXISTING, #FILE_FLAG_BACKUP_SEMANTICS, 0)
If hFile
  SetFileTime_(hFile, @filetime, @filetime, @filetime)
  CloseHandle_(hFile)
EndIf

...О, вроде получилось :roll:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
filetime.FILETIME
systime.SYSTEMTIME
systime\wYear = 2000
systime\wMonth = 12
systime\wDayOfWeek = 3
systime\wDay = 12
systime\wHour = 9
systime\wMinute = 30
systime\wSecond = 15
systime\wMilliseconds = 300
 
SystemTimeToFileTime_(@systime, @filetime)
FileName.s = "test"
 
hFile.l = CreateFile_(@FileName, #GENERIC_WRITE, #FILE_SHARE_WRITE, 0, #OPEN_EXISTING, #FILE_FLAG_BACKUP_SEMANTICS, 0)
If hFile
  SetFileTime_(hFile, @filetime, @filetime, @filetime)
  CloseHandle_(hFile)
EndIf



Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Ср мар 13, 2019 6:04 am 
Не в сети
док

Зарегистрирован: Пн сен 27, 2010 10:30 am
Сообщений: 149
Откуда: Уренгой
Благодарил (а): 0 раз.
Поблагодарили: 10 раз.
Пункты репутации: 5
Спасибо, получилось! Надо только иметь в виду, что работает при условии, что папка не открыта.
П.С. Еще нужно делать поправку на часовой пояс.

П.П.С. Вот что получилось, пусть здесь лежит, может, пригодится кому.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
Procedure SetFileOrDirectoryTime(FileName.s,timeCreated,timeAccessed,timeModified)
;если время=0 - параметр не меняется
  GetTimeZoneInformation_(tzi.TIME_ZONE_INFORMATION)
 
 fileCreatedtime.FILETIME
 fileAccessedtime.FILETIME
 fileModifiedtime.FILETIME
 
 systime.SYSTEMTIME
 
systime\wYear = Year(timeCreated)
systime\wMonth = Month(timeCreated)
systime\wDay = Day(timeCreated)
systime\wHour = Hour(timeCreated)+tzi\Bias/60
systime\wMinute = Minute(timeCreated)
systime\wSecond = Second(timeCreated)
systime\wMilliseconds = Random(999)
 
SystemTimeToFileTime_(@systime, @fileCreatedtime)
 
 
systime\wYear = Year(timeAccessed)
systime\wMonth = Month(timeAccessed)
systime\wDay = Day(timeAccessed)
systime\wHour = Hour(timeAccessed)+tzi\Bias/60
systime\wMinute = Minute(timeAccessed)
systime\wSecond = Second(timeAccessed)
systime\wMilliseconds = Random(999)
 
SystemTimeToFileTime_(@systime, @fileAccessedtime)
 
systime\wYear = Year(timeModified)
systime\wMonth = Month(timeModified)
systime\wDay = Day(timeModified)
systime\wHour = Hour(timeModified)+tzi\Bias/60
systime\wMinute = Minute(timeModified)
systime\wSecond = Second(timeModified)
systime\wMilliseconds = Random(999)
 
SystemTimeToFileTime_(@systime, @fileModifiedtime)
 
 
hFile.l = CreateFile_(@FileName, #GENERIC_WRITE, #FILE_SHARE_WRITE, 0, #OPEN_EXISTING, #FILE_FLAG_BACKUP_SEMANTICS, 0)
If hFile
  result= SetFileTime_(hFile, @fileCreatedtime, @fileAccessedtime,@fileModifiedtime)
  CloseHandle_(hFile)
EndIf
 
ProcedureReturn result
EndProcedure
 
 
FileName.s = "c:\тест"
 
timeCreated=ParseDate("%dd-%mm-%yyyy %hh:%ii:%ss","10-10-2015 08:30:43")
timeAccessed=ParseDate("%dd-%mm-%yyyy %hh:%ii:%ss","11-10-2015 09:30:43")
timeModified=ParseDate("%dd-%mm-%yyyy %hh:%ii:%ss","12-10-2015 10:30:43")
 
Debug SetFileOrDirectoryTime(FileName.s,timeCreated,0,timeModified)
 



Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB