Jump to content
Guilherme Teodoro

Cadeia de caracteres não foi reconhecida como DateTime válido - Internet Explorer e Microsoft Edge somente

Recommended Posts

Fala pessoal. Tudo bem!?

 

Estou com um erro que está me deixando maluco.

Estou tentando fazer um parse de string para datetime e não estou conseguindo.

var dt = DateTime.ParseExact(data, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None);

A variável data vem de uma requisição AJAX (Angular) via POST.

 

public JsonResult ListaParcelas(string codigo, string tipo, string data = null, int? leiAgregacao = null, IList<ParcelaAgregacao> parcelas = null)

 

Ao tentar passar essa linha acima, ele gera o erro:

"Cadeia de caracteres não foi reconhecida como DateTime válido"

Vamos aos detalhes.... A variável {data} está com a data formata de hoje, ou seja, 20/06/2017. 

Abrindo o Immediate Window e tentar executar:

DateTime.ParseExact(data, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None);

Gera erro. Porém, se executar:

DateTime.ParseExact("20/06/2017", "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None);

Funciona.

OK... Como uma forma de tentar resolver o problema, resolvi fazer um SPLIT dessa informação pela barra e dar um new Date informando cada campo separadamente.

Para minha surpresa, apresenta um erro de parse no momento de converter para int o dia.

if (!string.IsNullOrEmpty(data))
{
  var parteData = data.Split(@"/".ToCharArray());
  var dia = int.Parse(parteData[0]);
  var mes = int.Parse(parteData[1]);
  var ano = int.Parse(parteData[2]);

  dataVencimento = new DateTime(ano, mes, dia);
}

E este problema só ocorre com o Internet Explorer e o Microsoft Edge. Se eu utilizar o Google Chrome, Firefox, Opera, Safari, etc etc etc, funciona.

Alguma dica?

Edited by Guilherme Teodoro
Adicionando informações que podem ser úteis

Share this post


Link to post
Share on other sites
5 minutos atrás, Guilherme Teodoro disse:

Não tenho construtor de DateTime recebendo String.

Qual a namespace do seu DateTime?

É não tem, me equivoquei, foi mal.

var data = "20/11/2017"; // ou "2017/11/20"
var date = DateTime.Parse(data);

ou com tryparse

var dataString = "20/11/2017"; // ou "2017/11/20"
DateTime data;
if(!DateTime.TryParse(dataString, out data))
{
	//erro
}

 

Share this post


Link to post
Share on other sites

Mas o que vem dentro dessa variável?

Não tem diferença se vem de post ou get. O que importa é o valor dela. 

Acho que está vindo algo errado, senão teria funcionado.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Lucaahenr
      Boa tarde pessoal!

      Tenho que fazer um programa em C# que realize o calculo de uma equação de 2° Grau, porem é necessário realizar algumas verificações utilizando IF,  Else e estou tendo dificuldade em realizar estas verificações, gostaria de saber se está correto o que eu fiz ou se tem algum outro modo, segue questão em anexo.

      Muito Obrigado!

      using System; namespace equacaoSegundoGrau { class equacacao { static void Main(string[] args) { double a, b, c, delta; Console.WriteLine("Informe o coeficiente A"); a = double.Parse(Console.ReadLine()); Console.WriteLine("Informe o coeficiente B"); b = double.Parse(Console.ReadLine()); Console.WriteLine("Informe o coeficiente C"); c = double.Parse(Console.ReadLine()); // mesma coisa que a de baixo delta = (b * b) - 4 * a * c; delta = Math.Pow(b, c) - 4 * a * c; if ((a == 0) && (b == 0) && (c != 0)) { Console.WriteLine("Coeficientes informados incorretamente."); } else if ((a == 0) && (b != 0)) { Console.WriteLine("Essa é uma equação de primeiro grau e deverá ser informado o valor da raiz real da equação."); } else if (delta < 0) { Console.WriteLine("Esta equação não possui raízes reais"); } else if (delta == 0) { Console.WriteLine("Esta equação possui duas raízes reais iguais e informar o valor das raízes da equação." + delta); } else if (delta > 0) { Console.WriteLine("Esta equação possui duas raízes reais diferentes."); Console.WriteLine("O valor desta equação é " + delta); } } } }
       
    • By Eduardo Cândido da Rosa
      Boa noite da lista de 30 por enquanto foram 2 os problemas que não consegui entender o enunciado ou não consegui realmente resolver...
       
      Gostaria da ajuda de vocês para resolver esse enunciado em C++, não vou postar o que fiz pois não consegui formular uma resposta adequada espero que ajudem.
       
      27)    A locadora de carros SAI DA FRENTE está fazendo uma promoção e está alugando carros no período junino por R$ 30,00 a diária. Além disso, a locadora cobra R$ 0,01 por quilômetro rodado. Como é período de São João, a locadora quer fidelizar os clientes e está dando 10% de desconto no valor total do aluguel de qualquer carro.
       
      Implemente um programa em C++ que leia quantos dias a pessoa ficou com o carro: [1; 30] e quantos quilômetros ela rodou [1; 1000], calcule e mostre o valor total que a pessoa deve pagar pelo aluguel do carro.
    • By Eduardo Cândido da Rosa
      Q)  Uma máquina automática de café só funciona com notas de 5 reais e nunca dá o troco. O café custa 7 reais. Assim, se o cliente pedir apenas um café, ele vai perder 3 reais, pois terá que dar 10 reais, e a máquina não devolverá o troco.
       
      É possível comprar mais de um café em uma só compra. Logo, se o cliente colocou 15 reais, significa que ele vai obter dois cafés e perderá 1 real.
       
      Implemente um programa em C++ que leia a quantidade de dinheiro que o cliente colocou na máquina sempre um múltiplo de 5 e imprima quanto o cliente irá perder no troco.
       
      O que fiz até agora, não sei o que devo mudar, me ajudem por favor:
       
      #include <iostream>
      using namespace std;
      int main() {
       
       
      int i,resultado,valor;
       
       
      cout << "Informe o valor:\n";
       
      cin >> valor;

      }
       
      for(i = 0; valor >= 7; i++){
        valor -= 7;
        resultado = valor;
      }
       
      cout << "\nA quantidade de cafe: "  << i << endl;  
      cout << "\nO restante do dinheiro: " << resultado << endl;    
         
      }else{
      cout << "\nErro!!\n" << endl;
      }
       
      return 0;
      }
    • By iago_ss
      Olá!!!
      Sou iniciante na área de programação para desktop e móvel, porém, penso em iniciar um curso para começar a desenvolver para estas áreas.
      Hoje, penso em desenvolver um programa, similar a um site q possuo, isso porque fico preso a diversos problemas impossíveis de resolver por ser um ambiente web. 
      O site hoje possui uma webrádio shoutcast (passo por problemas sempre que o chrome atualiza as politicas de privacidade), um fórum, notícias de jogos dentre outras funcionalidades.
      Além disso, gostaria de implementar mini-jogos.
       
      Gostaria de saber qual a melhor linguagem, no ponto de vista de vocês, para desenvolver esse programa, tendo em vista que eu partiria do zero.
      Pesquisei sobre e as mais utilizadas são c# e Java. Com essas linguagens é possível consultar banco de dados mysql hospedados na web?
    • By frlopes
      Pessoal, bom dia.
       
      Tentei fazer o exemplo abaixo do site:
       
      http://www.macoratti.net/15/10/mvc_roles1.htm
       
      E está retornando o seguinte erro quando tento fazer um novo registro:
       
      System.InvalidOperationException: 'The ViewData item that has the key 'Name' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'.'
       
      Alguém poderia me ajudar? 
      Obrigada!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.