На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.

Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ!
4. Используйте теги [ code=vba ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта user posted image FAQ Раздела user posted image Кладовка user posted image Наши Исходники user posted image API-Guide user posted image Поиск по Разделу user posted image MSDN Library Online user posted image Google

Ваше мнение о модераторах: user posted image SCINER, user posted image B.V.
Модераторы: SCINER, B.V.
  
> ф-я GetFileTime
    Возвращает всегда одно и то же время создания файла, или возможны отклонения с учётом летнего времени?
      Функция GetFileTime в языке программирования Visual Basic возвращает время создания файла в формате UTC (координированного всемирного времени) без учета летнего времени (DST - Daylight Saving Time). Это означает, что она не учитывает переходы на летнее время и стандартное время в различных часовых поясах.

      Если вам требуется учесть летнее время (DST) при получении времени создания файла, вам может понадобиться дополнительная обработка и конвертация времени. Например, вы можете использовать функции, такие как GetTimeZoneInformation и SystemTimeToTzSpecificLocalTime, для преобразования времени из UTC в местное время с учетом летнего времени.

      Пример преобразования времени из UTC в местное время с учетом летнего времени в Visual Basic:
      ExpandedWrap disabled
        Dim fileTime As FILETIME
        ' Здесь происходит получение времени создания файла с помощью GetFileTime и сохранение его в fileTime
         
        ' Получение информации о часовом поясе
        Dim timeZoneInfo As TIME_ZONE_INFORMATION
        GetTimeZoneInformation timeZoneInfo
         
        ' Преобразование времени из UTC в местное время с учетом летнего времени
        Dim localFileTime As FILETIME
        FileTimeToLocalFileTime fileTime, localFileTime
        Dim localSystemTime As SYSTEMTIME
        FileTimeToSystemTime localFileTime, localSystemTime
        Dim localTime As Date
        SystemTimeToTzSpecificLocalTime timeZoneInfo, localSystemTime, localTime

      ' Теперь localTime содержит местное время с учетом летнего времени
      Обратите внимание, что поддержка летнего времени зависит от операционной системы и настроек компьютера, на котором выполняется код.
        Мне-то как раз нужно постоянное значение, записанное в данные файловой системы. Я где-то читал, что на FAT-разделах она берёт время из какого-то кеша, которое может меняться с учётом летнего. Плюс у меня есть старая прога, где в комментах после GetFileTime написано: если был переход на летнее время, то выполняем такой-то код. А почему я это написал - то ли для подстраховки, то ли она реально со временем балуется - уж не помню. Потому и спрашиваю, ибо в инете много чего понаписано.
          Вот я снова возвращаюсь к вопросу, ибо возникли проблемы при переходе на летнее время. Нужно получить время UTC создания папки (папка на FAT32 - возвращается местное время, проверка на файл. систему в коде пока что отсутствует - хорошо бы было получать просто значение, записанное в файл. системе - без всяких конвертаций). Код не сработал:

          ExpandedWrap disabled
            Public Function GetFolderCreateTime(NameFolder As String, Out_CreationFT As FILETIME) As Double
            Dim hFolder As Long, FT As FILETIME, lRet As Long
               GetFolderCreateTime = -1
               hFolder = CreateFile(NameFolder, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_DELETE, 0&, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0&)
               If hFolder = INVALID_HANDLE_VALUE Then
                Exit Function
               End If
              
               lRet = GetFileTime(hFolder, Out_CreationFT, FT, FT)
               If lRet = 0 Then
                Exit Function
               End If
            'если FAT32
               lRet = LocalFileTimeToFileTime(Out_CreationFT, FT)
               If lRet = 0 Then
                Exit Function
               End If
               Out_CreationFT = FT
            End Function
          Сообщение отредактировано: BlackSun -
            м.б. зависит ещё от Windows? WinXP, например, делает конвертацию в местное время, а Win10 - нет?
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0280 ]   [ 16 queries used ]   [ Generated: 27.04.24, 12:53 GMT ]