Формат даты

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Формат даты

Сообщение lister » 03.03.2006 (Пт) 18:06

Функция Format выводит дату в соответствии с локальными параметрами компьютера

Format(Now(), "ddd, mmm d yyyy ttttt") выдаст
Пт, мар 3 2006 18:03:01 мне же нужно Fri, 03 Mar 2006 18:03:01

Подскажите, как вывести дату в нужном формате

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.03.2006 (Пт) 19:05

Написать свою функцию. Всего-то, 7+12=29 Case (или два Choose) и 5 Format.
Lasciate ogni speranza, voi ch'entrate.

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 05.03.2006 (Вс) 0:12

хм... а зачем именно 5 Format ?

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 06.03.2006 (Пн) 10:55

alibek писал(а):7+12=29

Сильно

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 06.03.2006 (Пн) 11:12

lister
Предполагается Option Base 0
Код: Выделить всё
Function MyDate(d as Date) as String
  Dim a, b
  a = Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
  b = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
  MyDate = a(Weekday(Date, vbMonday) - 1) & Format$(Date, ", dd ") & b(Month(Date) - 1) & Format$(Now, " yyyy Hh:Nn:Ss")
End Function

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.03.2006 (Пн) 11:43

Nicky, ты про функцию Choose слышал?
Lasciate ogni speranza, voi ch'entrate.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 06.03.2006 (Пн) 11:54

alibek
Принимаю конструктивную критику
Код: Выделить всё
  EngDate = Choose(Weekday(d, vbMonday), "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun") & _
    Format$(d, ", dd ") & Choose(Month(d), "Jan", "Feb", "Mar", "Apr", "May", "Jun", _
    "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") & Format$(d, " yyyy Hh:Nn:Ss")

Но согласись, что это лучше, чем "...Всего-то, 7+12=29 Case (или два Choose) и 5 Format"

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Формат даты

Сообщение Andrey Fedorov » 06.03.2006 (Пн) 12:09

lister писал(а):Функция Format выводит дату в соответствии с локальными параметрами компьютера

Format(Now(), "ddd, mmm d yyyy ttttt") выдаст
Пт, мар 3 2006 18:03:01 мне же нужно Fri, 03 Mar 2006 18:03:01

Подскажите, как вывести дату в нужном формате


А так и выводить. Вполне серъезно.

Ибо на твоем компьютере региональные установки русские, поэтому дату ты видишь по русски. На компьютере с другими региональными установками и дата будет выводиться по другому, а именно - на языке пользователя.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.03.2006 (Пн) 12:15

В инете юзается дата в фиксированном формате.
Подозреваю, что дакой формат нужен поэтому.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 06.03.2006 (Пн) 12:22

alibek писал(а):Подозреваю, что дакой формат нужен поэтому.


Какой ты подозрительный... :lol:
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 08.03.2006 (Ср) 18:26

alibek писал(а):В инете юзается дата в фиксированном формате.
Подозреваю, что дакой формат нужен поэтому.


Правильно подозреваешь :)

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Re: Формат даты

Сообщение lister » 08.03.2006 (Ср) 18:31

Andrey Fedorov писал(а):
lister писал(а):Функция Format выводит дату в соответствии с локальными параметрами компьютера

Format(Now(), "ddd, mmm d yyyy ttttt") выдаст
Пт, мар 3 2006 18:03:01 мне же нужно Fri, 03 Mar 2006 18:03:01

Подскажите, как вывести дату в нужном формате


А так и выводить. Вполне серъезно.

Ибо на твоем компьютере региональные установки русские, поэтому дату ты видишь по русски. На компьютере с другими региональными установками и дата будет выводиться по другому, а именно - на языке пользователя.

нет, нужно именно Fri, 03 Mar 2006 18:03:01
а вообще лучше бы Fri, 03 Mar 2006 18:03:01 +0300

Накодил следующее:
Код: Выделить всё
Private Function FormatDate() As String
  Dim strWeekDay As String
  Dim strDay As String
  Dim strMonth As String
  Dim strHour As String
  Dim strMinute As String
  Dim strSecond As String
  Dim strTimeZone As String
 
'  День недели
  strWeekDay = Choose(Weekday(Now, vbMonday), _
      "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
 
'  День месяца
  strDay = Format(Day(Now), "00")
 
'  Месяц
  strMonth = Choose(Month(Now), _
      "Jan", "Feb", "Mar", "Apr", "May", "Jun", _
          "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
 
'  Форматировать время
  strHour = Format(Hour(Now), "00")
  strMinute = Format(Minute(Now), "00")
  strSecond = Format(Second(Now), "00")

'  Часовой пояс
  strTimeZone = Format(GetTimeZone / 0.6, "+0000")
 
 
  FormatDate = _
      strWeekDay & ", " & _
          strDay & " " & _
              strMonth & " " & _
                  Year(Now) & " " & _
                      strHour & ":" & _
                          strMinute & ":" & _
                              strSecond & " " & _
                                  strTimeZone
 
 
End Function




Private Function GetTimeZone()
  Const TIME_ZONE_ID_STANDARD As Long = 1
  Const TIME_ZONE_ID_UNKNOWN As Long = 0
  Const TIME_ZONE_ID_DAYLIGHT As Long = 2
  Const TIME_ZONE_ID_INVALID As Long = &HFFFFFFFF
 
  Dim typTZI As TIME_ZONE_INFORMATION
  Dim lngReturn As Long

  lngReturn = GetTimeZoneInformation(typTZI)
 
  GetTimeZone = -(typTZI.Bias + IIf(lngReturn = TIME_ZONE_ID_DAYLIGHT, typTZI.DaylightBias, 0))
 
End Function


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 63

    TopList