Datas no formato JSON "\/Date(829332360000-0300)\/"
Enviado: 15 Out 2014 15:24
Amigos,
Estou trabalhando em uns webservice que usam JSON para transporte de dados, e perdi horas por causa do formato maluco de datas que o JSON usa, baseado em milissegundos.
Ai para contribuir, resolvi com esta pequena rotina, poderia fazer em C também, mas esta em puro harbour vale a pena pra aprendizado. Se alguém quiser melhorar vai ser bom.
O Harbour não dá suporte a tal formato, quando se gera um JSON com a HB_JSONENCODE, ela deixa as datas vazias. Isso pode ser muito útil. Ainda uso o Harbour 3.1 e não sei se na versão atual Beta colocaram este suporte.
Estou trabalhando em uns webservice que usam JSON para transporte de dados, e perdi horas por causa do formato maluco de datas que o JSON usa, baseado em milissegundos.
Ai para contribuir, resolvi com esta pequena rotina, poderia fazer em C também, mas esta em puro harbour vale a pena pra aprendizado. Se alguém quiser melhorar vai ser bom.
O Harbour não dá suporte a tal formato, quando se gera um JSON com a HB_JSONENCODE, ela deixa as datas vazias. Isso pode ser muito útil. Ainda uso o Harbour 3.1 e não sei se na versão atual Beta colocaram este suporte.
Código: Selecionar todos
function date_json(xDate,xHora,xUtc)
xDate=(xDate-ctod("01/01/1970"))*86400000
xDate+=(((val(left(xHora,2))*60)*60)*1000)+((val(substr(xHora,4,2))*60)*1000)+(val(right(xHora,2))*1000)
xDate=alltrim(str(xDate))
if xUtc=Nil
xUtc="-0300" // Timezone do Brasil
end if
xDate+=xUtc
xDate='\/Date('+xDate+')\/'
return xDate
function json_date(xDate)
xDate=lower(xDate)
xDate=strtran(xDate,'\/date(')
xDate=strtran(xDate,'/date(')
xDate=strtran(xDate,')/\')
xDate=strtran(xDate,')/')
if "-"$xDate // Retira o timezone
xDate=left(xDate,at("-",xDate)-1)
end if
xDate=val(xDate)
return ctod("01/01/1970")+(xDate/86400000)