none
Converter String para Datetime ("DD/MM/YYYY/ hh:mm:ss") RRS feed

  • Pergunta

  • Galera, boa tarde

    Estou tendo problemas ao converter uma data, que está no formato String e não formatada => "20150809153951".

    Quero deixa-la no formato DateTime => "08/09/2015 15:39:51";

    e logo após subtaí-la de outra data, para saber quanto tempo ja se passou desde a última data recebida, em horas => 08/09/2015 15:39:51 - 07/09/2015 15:39:50 = 23:59:59.

    Não sei se estou sendo claro o suficiente, mas meu caso é referente ao SAT em São Paulo.

    Estou desenvolvendo o Cancelamento do Cupom. Este não pode ser cancelado após 30 minutos da última emissão, e gostaria de exibir o tempo que ja se passou após esta última emissão.

    Segue Exemplo abaixo:

    MessageBox.Show("CFCe00000001 - emitido a 00:30:00 atrás")

    Ja tentei de diversas formas com o método .ToString("") mas não tive êxito.

    Fico extremamente grato desde já !

    terça-feira, 8 de setembro de 2015 18:58

Respostas

  • Renan,

    Segue o código:

    string data = "20150809153951"; var ano = Convert.ToInt32(data.Substring(0, 4)); var dia = Convert.ToInt32(data.Substring(4, 2)); var mes = Convert.ToInt32(data.Substring(6, 2)); var hora = Convert.ToInt32(data.Substring(8, 2)); var minuto = Convert.ToInt32(data.Substring(10, 2)); var segundo = Convert.ToInt32(data.Substring(12, 2)); var dataConvertida = new DateTime(ano, mes, dia, hora, minuto, segundo);

    Console.WriteLine(dataConvertida.ToString("dd/MM/yyyy HH:mm:ss"));

    Qualquer dúvida é só falar,


    Carlos Eduardo Ferreira


    terça-feira, 8 de setembro de 2015 19:29
  • Renan,

    Segue o código:

    string data = "20150809153951"; var ano = Convert.ToInt32(data.Substring(0, 4)); var dia = Convert.ToInt32(data.Substring(4, 2)); var mes = Convert.ToInt32(data.Substring(6, 2)); var hora = Convert.ToInt32(data.Substring(8, 2)); var minuto = Convert.ToInt32(data.Substring(10, 2)); var segundo = Convert.ToInt32(data.Substring(12, 2)); var dataConvertida = new DateTime(ano, mes, dia, hora, minuto, segundo);

    Console.WriteLine(dataConvertida.ToString("dd/MM/yyyy HH:mm:ss"));

    Qualquer dúvida é só falar,


    Carlos Eduardo Ferreira


    CarlosEduardo Ferreira, perfeito cara ! Muito obrigado !

    Segue abaixo o método que criei para validar minha data:

    private DateTime ConverterData(string data)
            {
                var ano = Convert.ToInt32(data.Substring(0, 4));
                var dia = Convert.ToInt32(data.Substring(4, 2));
                var mes = Convert.ToInt32(data.Substring(6, 2));
                var hora = Convert.ToInt32(data.Substring(8, 2));
                var minuto = Convert.ToInt32(data.Substring(10, 2));
                var segundo = Convert.ToInt32(data.Substring(12, 2));
    
                DateTime dataConvertida = new DateTime(ano, mes, dia, hora, minuto, segundo);
                return dataConvertida;
            }


    private string VerificaDataUltimaEmissao(string datEmissao, string datAtual) //Neste caso não utilizei o DateTime.Now(), pois preciso da data atual do servidor.
            {
                DateTime datEmi = ConverterData(datEmissao);
                DateTime datAtu = ConverterData(datAtual);
                TimeSpan intervalo = datEmi - datAtu;
    
                bool ultrapassou = intervalo.TotalMinutes > 30 ? true : false;
    
                if (ultrapassou == true) 
                {   
                    lblUltimoCF.Foreground = Brushes.DarkRed;
                    Btn_Ok.IsEnabled = false;
                    return "mais de 30 minutos"
                }
                else
                {
                    
                    lblUltimoCF.Foreground = Brushes.Black;
                    Btn_Ok.IsEnabled = true;
                    return intervalo.Minutes.ToString();
                }            
            }




    • Marcado como Resposta Renan Valentim sexta-feira, 11 de setembro de 2015 19:14
    • Editado Renan Valentim sexta-feira, 11 de setembro de 2015 19:16
    sexta-feira, 11 de setembro de 2015 19:13

Todas as Respostas

  • Uma maneira de resolver isso seria colocar a mascara novamente da data no campo e fazer a subtração da data. Segue um exemplo

    //20150809153951
    string dataEnvio = "2015-08-09T15:39:51"; //Data Formatada novamente
    
    TimeSpan total = DateTime.Now - Convert.ToDateTime(dataEnvio);
    
    int minutos = total.Minutes;

    Espero ter ajudado.

    Att,
    Gustavo Freitas

    terça-feira, 8 de setembro de 2015 19:20
  • Renan,

    Segue o código:

    string data = "20150809153951"; var ano = Convert.ToInt32(data.Substring(0, 4)); var dia = Convert.ToInt32(data.Substring(4, 2)); var mes = Convert.ToInt32(data.Substring(6, 2)); var hora = Convert.ToInt32(data.Substring(8, 2)); var minuto = Convert.ToInt32(data.Substring(10, 2)); var segundo = Convert.ToInt32(data.Substring(12, 2)); var dataConvertida = new DateTime(ano, mes, dia, hora, minuto, segundo);

    Console.WriteLine(dataConvertida.ToString("dd/MM/yyyy HH:mm:ss"));

    Qualquer dúvida é só falar,


    Carlos Eduardo Ferreira


    terça-feira, 8 de setembro de 2015 19:29
  • Boa tarde

    Já passou dentro do ToString("dd/MM/yyyy HH:mm:ss")  ?

    Att 

    terça-feira, 8 de setembro de 2015 20:09
  • Renan,

    Segue o código:

    string data = "20150809153951"; var ano = Convert.ToInt32(data.Substring(0, 4)); var dia = Convert.ToInt32(data.Substring(4, 2)); var mes = Convert.ToInt32(data.Substring(6, 2)); var hora = Convert.ToInt32(data.Substring(8, 2)); var minuto = Convert.ToInt32(data.Substring(10, 2)); var segundo = Convert.ToInt32(data.Substring(12, 2)); var dataConvertida = new DateTime(ano, mes, dia, hora, minuto, segundo);

    Console.WriteLine(dataConvertida.ToString("dd/MM/yyyy HH:mm:ss"));

    Qualquer dúvida é só falar,


    Carlos Eduardo Ferreira


    CarlosEduardo Ferreira, perfeito cara ! Muito obrigado !

    Segue abaixo o método que criei para validar minha data:

    private DateTime ConverterData(string data)
            {
                var ano = Convert.ToInt32(data.Substring(0, 4));
                var dia = Convert.ToInt32(data.Substring(4, 2));
                var mes = Convert.ToInt32(data.Substring(6, 2));
                var hora = Convert.ToInt32(data.Substring(8, 2));
                var minuto = Convert.ToInt32(data.Substring(10, 2));
                var segundo = Convert.ToInt32(data.Substring(12, 2));
    
                DateTime dataConvertida = new DateTime(ano, mes, dia, hora, minuto, segundo);
                return dataConvertida;
            }


    private string VerificaDataUltimaEmissao(string datEmissao, string datAtual) //Neste caso não utilizei o DateTime.Now(), pois preciso da data atual do servidor.
            {
                DateTime datEmi = ConverterData(datEmissao);
                DateTime datAtu = ConverterData(datAtual);
                TimeSpan intervalo = datEmi - datAtu;
    
                bool ultrapassou = intervalo.TotalMinutes > 30 ? true : false;
    
                if (ultrapassou == true) 
                {   
                    lblUltimoCF.Foreground = Brushes.DarkRed;
                    Btn_Ok.IsEnabled = false;
                    return "mais de 30 minutos"
                }
                else
                {
                    
                    lblUltimoCF.Foreground = Brushes.Black;
                    Btn_Ok.IsEnabled = true;
                    return intervalo.Minutes.ToString();
                }            
            }




    • Marcado como Resposta Renan Valentim sexta-feira, 11 de setembro de 2015 19:14
    • Editado Renan Valentim sexta-feira, 11 de setembro de 2015 19:16
    sexta-feira, 11 de setembro de 2015 19:13