Как отформатировать дату Json при публикации по URL-адресу?

Я получил этот JSON в VB6 (не .NET) внутри текстового поля:

[{"id":123,"key":"h73df", "birth_date":"20180101"}]

При отправке по URL-адресу ошибка не возвращается .. но дата не вставляется, и я не знаю почему.

Я уже пробую разные форматы, например:

"2018.01.01"
["20180101"]
2018.01.01

но не сработает. Я думаю, мне нужно использовать что-то вроде cdate(), но затем я помещаю всю строку JSON в текстовое поле, и все становится простой строкой ... и не работает.

JSON действительно не имеет типа даты. Люди в конечном итоге подбрасывают любую причудливую смесь, которую хотят. Вам нужно выяснить, чего ожидает публикуемый вами сервер, а затем выполнить его.

Bob77 22.05.2018 01:32

Возможный дубликат "Правильный" формат даты JSON

user65839 22.05.2018 07:14

Вам необходимо опубликовать документацию с сайта, на котором вы пытаетесь разместить это сообщение. Неважно, что кто-то из нас считает правильным форматом даты, все, что имеет значение, - это то, что ожидает этот отец или API.

tcarvin 22.05.2018 15:22
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
1
3
191
1

Ответы 1

Самому JSON не важно, какой формат вы используете для даты. Однако чаще всего он используется в формате JavaScript, который является форматом ISO 8601.

При этом вы можете создать строку в этом формате, используя следующий код VB6 (ниже возвращается время в формате UTC, если вы хотите использовать местное время, вам нужно будет вызвать API GetLocalTime вместо GetSystemTime):

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Put inside module:
Private Type SYSTEMTIME '16 Bytes
  wYear         As Integer
  wMonth        As Integer
  wDayOfWeek    As Integer
  wDay          As Integer
  wHour         As Integer
  wMinute       As Integer
  wSecond       As Integer
  wMilliseconds As Integer
End Type

Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Function GetJsonDateTime() As String    
    Dim NowTime As SYSTEMTIME
    Dim sYear, sMonth, sDayOfWeek, sDay, sHour, sMinute, sSecond, sMilliseconds As String
    Dim JsonDateTime As String

    GetSystemTime NowTime

    sYear = Format(NowTime.wYear, "0000")
    sMonth = Format(NowTime.wMonth, "00")
    sDay = Format(NowTime.wDay, "00")
    sHour = Format(NowTime.wHour, "00")          'wHour - or + X depends local timezone
    sMinute = Format(NowTime.wMinute, "00")
    sSecond = Format(NowTime.wSecond, "00")
    sMilliseconds = Format(NowTime.wMilliseconds, "000")

    JsonDateTime = sYear & "-" & sMonth & "-" & sDay & "T" & sHour & ":" & sMinute & ":" & sSecond & "." & sMilliseconds & "Z"

    GetJsonDateTime = JsonDateTime
End Function

Другие вопросы по теме