Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Remazela

PHP - Problema com campo DateTime

Recommended Posts

Caros amigos

Por favor, me perdoa por recorrer ajuda dos amigos novamente, com algo simples para alguns campo DateTime.

Estou melhorando o meu sistema, para maior agilidade estou tentando utilizar o Campo DateTime.

No input escrevi desta forma:

<input type="datetime-local" name="dhl" value="<?php echo date("Y-m-d H:i:s",time()); ?>"/>

o Resultado na tela mostra assim: dd/mm/aaaa --:-- . Até aí tudo bem.

Só que quando quero alterar a Data para gravar no Banco MySql, a linha acima sempre pega a Data e Hora local.

Como faço para manter a máscara, mas gravar a date desejada de escolha do usuário ?

Grato,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Converte ué.

Ex, um datetime normalmente é assim:

2015-03-02 10:37:45

Então se precisa converter antes de salvar.

//2015-03-02 10:37:45 -> Repare tem um espaço entre a dt + hr
list($data, $hora) = explode(' ', $_POST['dhl']);
var_dump($data); // 2015-03-02
var_dump($hora); // 10:37:45

Outra opção:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

@gabrieldarezzo Você usou explode?


51678032.jpg



@Remazela verifique a configuração do servidor, se necessário, mantenha em ambos.

Uma consideração, entretanto, não consigo testar no momento. Utilize a formatação DateTime::W3C.

A W3C carrega consigo o fuso horário ("Y-m-d\TH:i:sP").

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro amigo

Desculpa, mas ainda continuo com dúvida.

Se utilizo esta linha de comando para gravar uma data inicial:

<input type="datetime-local" name="dhl" value="<?php echo date("Y-m-d H:i:s",time()); ?>"/>

e Pega sempre a Data e Hora local, independente de ser alterada ou não.

Então a melhor opção neste caso não é usara o DateTime e sim apenas Date ?

Observação: não entendi

Grato,

Renato

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Heming com list pode JSAHUSHAS

Foi uma opção que dei, utilizo ou o explode ou o STR_TO_DATE, a parte ruim é q se você trabalhar com 2 bancos Oracle x Mysql não fica portável a base. (TO_DATE no Oracle :()

Já utilizando o Explode funciona tanto em um qnt no outro, valida com um checkdate e pau na maquina hahaha

Alguma ideia/dica ?

Ex com STR_TO_DATE:

CREATE TABLE imaster_datetime;

use imaster_datetime;

CREATE TABLE tabela_com_datetime(
	data_hora datetime	
);

/* STR_TO_DATE(str,format) */ 


INSERT INTO tabela_com_datetime(data_hora) VALUES (STR_TO_DATE('06/10/1992', '%d/%m/%Y'));




SELECT 
	DATE_FORMAT(data_hora, '%d/%m/%Y') AS data_hora
FROM tabela_com_datetime 
 

retorno:

+------------+
| data_hora  |
+------------+
| 06/10/1992 |
+------------+
1 row in set (0.00 sec)

Para utiliza Hora, min, sec: %h:%i:%s

http://www.w3schools.com/sql/func_date_format.asp

Compartilhar este post


Link para o post
Compartilhar em outros sites

@gabrieldarezzo

echo \DateTime::createFromFormat('Y-m-d H:i:s' , '2015-03-02 10:37:45')->format(\DateTime::W3C);

Ou o formato/saída que desejar.

@Remazela

Eu entendi o seu problema, você gostaria que a data viesse com a hora zerada, do tipo 2015-03-02 00:00:00. Esse é um problema que, sempre ao criar uma data, mesmo informando alguma, utiliza a hora atual. Se a hora não é necessária para ti, sugiro usar apenas Date. Caso queira utilizar a data completa, basta mudar a sua máscara:

"Y-m-d 00:00:00"

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Heming

DateTime() > 5.2.0

Trabalhei tanto tempo em serv que não tinha possibilidade de update, era um inferno que acabei me acostumando de tanto a usar o explode() ou funções nativas de DB e fazer malabarismos que a chego a me assustar qnd vejo coisas igual o seu exemplo de tão facilitado que está hehe.

Vlw pelo exemplo, vou tentar me atualizar.

@Remazela

"Como faço para manter a máscara"

Não entendi isso, qnd você fala mascara é para o usuario entrar com a data e ela ficar padronizadinha?

"gravar a date desejada de escolha do usuário"

Pra gravar veja o #5

Compartilhar este post


Link para o post
Compartilhar em outros sites

Remazela, eu entendi que você pretende gravar a data no banco no formato dd/mm/aaaa ? Se sim, isso não é uma boa ideia, pois traria dificuldades depois para realizar consultas utilizando esse formato, o recomendado é manter no formato aaaa/mm/dd

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.