Qual é a melhor maneira de postar uma data / hora em uma visão Django?
-
18-09-2019 - |
Pergunta
Eu gostaria de construir uma visão que permite ao usuário obter uma lista de coisas que estão acontecendo em torno de um certo tempo.
Qual é a melhor maneira de construir este pedido? Por exemplo. Se eu quisesse obter todos os eventos que estão acontecendo agora eu poderia postar / eventos / 2009/09/29/8/23 /
Isso parece bastante tedioso, especialmente se eu quiser ter várias datas em um pedido. Eu poderia acabar com URLs que parecem / eventos / entre / 2009/09/29/8/23/2006/11/16/14/45 /
Existe uma simples (javascipt) maneira de converter uma data / hora para um timestamp e passar que no como um int, que pode, então, converter para uma data e hora dentro do ponto de vista?
Solução
Eu usaria uma estrutura de URL mais legível assim:
/events/2009-09-29/0823/
/events/2009-09-29/0823/to/2009-10-10/2100/
Eis alguns Javascript básico mostrando a construir esta estrutura:
function pad(number) {
return (number < 10 ? '0' : '') + number
}
function simpleDate(date) {
return date.getUTCFullYear() + '-' + pad(date.getUTCMonth()) + '-' + pad(date.getUTCDay())
}
function simpleTime(date) {
return pad(d.getUTCHours()) + pad(d.getUTCMinutes())
}
var d = new Date();
alert('/events/' + simpleDate(d) + '/' + simpleTime(d) + '/');
Outras dicas
Você poderia fazer algo parecido com isto:
var d = new Date ( "2009-09-30"); var timestamp = d.getTime () / 1000,0;
Isso vai te dar um timestamp usando JavaScript.
- / eventos / 2009 / -> todos os eventos em 2009
- / eventos / 2009/09 / -> todos os eventos em Set-09
- / eventos / 2009/09/29 / -> todos os eventos 29-Aug-09
- / eventos / 2009/09/29/8 / -> todos os eventos das 8:00 às 08:59, em 29-Aug-09
- / eventos / 2009/09/29/8/23 / -> todos os eventos at 8:23 em 29-Aug-09
- / eventos / 2009/09/29/8/23/10 -> todos os eventos a partir de 08:23 a 08:33, em 29-Aug-09
- / eventos / 2009/09/29/8/23/91 -> todos os eventos a partir de 08:23 a 09:54, em 29-Aug-09
- / eventos / 2009/09/29/8/10 -> todos os eventos das 8:00 às 18:00, em 29-Aug-09
- / eventos / 2009/09/29/10 -> todos os eventos de 29-Aug-09-8-Set-09
- / eventos / 2009/09/2 -?> Todos os eventos em agosto e setembro
- / eventos / 2009/2 -> todos os eventos em 2009 e 2010