Pergunta

Eu tenho uma tabela mysql que depende do unix tempo de época selo equivalente da data de entrada para classificar e filtrar em várias partes do site. Eu estou tentando implementar um selecionador de data que irá inserir a data no campo de formulário no formato dd / mm / aaaa. Eu estive lutando com a conversão dessa data no formato de época unix de acrescentar que a entrada no campo de linha. Todas as tentativas que fiz resultaram na geração do selo atual tempo do dia época. Alguém tem alguma idéia de como eu posso tomar esse formato de data e convertido no carimbo de tempo época equivalente é?

Agradecemos antecipadamente.

Informações adicionais:

Eu tenho tentado mktime, e tudo que eu vejo é hoje época. Desculpas, eu deveria ter acrescentado um código anteriormente para explicar melhor:

O id do formulário é "date" O campo de banco de dados é "época"

Aqui está o que eu estou tentando (sem sucesso) quando eu postar o para a data:

$epochhold = ($_POST['date']);
$epoch = mktime(0,0,0,$epochhold);

Eu entendo a partir de um post anterior que isso ainda iria apresentar o valor como mm / dd / aaaa e não mm, dd, aaaa como mktime espera, no entanto o posto não oferecer e resolução sobre como fazer isso. Eu tentei um str_replace para mudar o "/" para "" e que yeilded o mesmo resultado -. Ficando data época de hoje, independentemente da data inserida

Eis que exemplo de código - novamente este não funcionou, mas eu adicioná-lo para ajudar a ilustrar o que eu tentei

$epochhold = ($_POST['date']);
$epochold2 = str_replace('/', ', ', $epochhold)
$epoch = mktime(0,0,0,$epochhold2);

Obrigado pela resposta anterior, bem, eu não quero a resposta rápida para passar despercebida!

Obrigado a todos!

Obrigado a todos pelas respostas - strtotime parece estar funcionando melhor nos testes iniciais e pode ser o caminho a percorrer já que este formato é consistente em todo o site. Mas todas as sugestões ajudou com isso algumas outras coisas tudo bem para agradecer a todos novamente!

Foi útil?

Solução

Se você sabe que vai estar sempre em que formato, strtotime irá convertê-lo directamente para o unix timestamp.

strtotime($_POST['app_date']);

HTH!

Outras dicas

Você deve olhar para a mktime () função . Casal que com tanto expressões regulares ou strtotime () , e você vai tê-lo.

if ( ! preg_match('#\d{2}/\d{2}/\d{4}#', $_POST['date']) ) {
    // complain about invalid input
}

list($m, $d, $y) = explode('/', $_POST['date']);
$timestamp = mktime(0, 0, 0, $m, $d, $y);

Você vai precisar para enviar a dd, mm, aaaa como vars separado para mktime. Leva o valor em $ epochold2 como uma cadeia que seria inválido para mktime.

Sua melhor aposta seria a de usar o strtotime como já foi referido anteriormente, ou seguir o conselho de Ant P usando mktime.

strtotime () irá analisar praticamente qualquer formato de data e devolver o timestamp Unix. Tudo que você tem a fazer é passá-lo a sua cadeia de data / hora:

$unix_time = strtotime($_POST['date']);
if($unix_time < 0) {
    //error case
}
else {
    //value OK!
}

Como você pode ver acima, você pode até usá-lo para a entrada ajudar a validar -. Se um usuário insere uma data como 2008/02/31, ele retornará -1

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top