Eu tenho um formulário que passa duas datas (início e término) para um script PHP que irá adicioná-los a um banco de dados. Estou tendo problemas para validar isso. Eu continuo recebendo os seguintes erros
Um valor numérico não bem formado encontrado
É quando eu uso o seguinte
date("d",$_GET['start_date']);
Mas quando uso a função strtotime () conforme recomendado por muitos sites, obtenho uma data de carimbo de data / hora Unix de 01/01/1970. Alguma ideia de como posso obter a data correta?
php
validation
date
time
Deviland
fonte
fonte
$_GET['start_date']
contém.$_GET['start_date']
não seja um carimbo de data / hora esperado peladate
função como um segundo argumentoRespostas:
Porque você está passando uma string como o segundo argumento para a função de data, que deve ser um inteiro.
Tente strtotime, que irá analisar qualquer descrição textual de data e hora em inglês em um carimbo de data / hora Unix (inteiro):
fonte
public function __construct(int $someId....)
Simplesmente você pode resolver esse problema usando a
strtotime()
função.fonte
$_GET['start_date']
não é numérico, aposto, mas um formato de data não compatível comstrtotime
. Você precisará reformatar a data para um formato viável para strtotime ou usar a combinação de explode / mktime .Eu poderia adicionar um exemplo se você fizesse a gentileza de postar o formato que você recebe atualmente.
fonte
Eu me deparei com a mesma situação (no meu caso com um valor de data em um campo PHP personalizado em uma visualização Drupal), e o que funcionou para mim foi usar intval em vez de strtotime para transformar o valor em um inteiro - porque era basicamente um carimbo de data / hora , mas na forma de uma string em vez de um inteiro. Obviamente, esse não será o caso para todos, mas pode valer a pena tentar.
fonte
Este erro ocorre quando você realiza cálculos com variáveis que usam letras combinadas com números (alfanuméricos), por exemplo 24kb, 886ab ...
Eu tive o erro na seguinte função
O aplicativo carrega imagens, mas não funcionou, exibindo o seguinte aviso:
Solução: a
intval()
função extrai o valor inteiro de uma variável com dados alfanuméricos e cria uma nova variável com o mesmo valor, mas convertida em um inteiro com aintval()
função. Aqui está o código:fonte
Isso me ajudou muito -
fonte
Essa é uma pergunta antiga, mas há outra maneira sutil pela qual essa mensagem pode acontecer. Está muito bem explicado aqui, na documentação .
Imagine este cenário:
E
MyCustomExceptionHandler
é definido aproximadamente como:Na verdade, isso irá disparar uma nova exceção no manipulador de exceções personalizado, porque a
Exception
classe está esperando um número para o segundo parâmetro em seu construtor, masPDOException
pode ter alterado dinamicamente o tipo de retorno de$e->getCode()
para uma string.Uma solução alternativa para isso seria definir seu manipulador de exceções personalizado como:
fonte
Passar uma string não é necessariamente um problema, se ela contiver apenas dígitos.
Outra razão para isso acontecer é se você tiver um espaço antes ou depois. Por exemplo, "1557399276"
fonte
Se o erro for no momento de qualquer cálculo, verifique se os valores não contêm vírgulas (,). Os valores devem estar apenas no formato inteiro / flutuante.
fonte
Você precisa definir o fuso horário usando date_default_timezone_set ().
fonte
No meu caso, era a chave para sem_get
$ key deve ser um int, caso contrário, você obterá o seguinte erro:
fonte
se $ _GET ['data_de_início'] é uma string, converta-a em número inteiro ou duplo para negociar numericamente.
fonte