none
problema com data em javascript RRS feed

  • Pergunta

  • Pessoal,

    Tenho este xml que retorna a data de abertura da oportunidade. Como faço para dar um simples alert com está data, ou seja, quero converter a string que contem a data em Date. Tentei utilizar o Parse, DateFormat...... mas não funciona nada. Alguma sugestão?

    var xml = '' +
    '<?xml version=\'1.0\' encoding=\'utf-8\'?>' +
    '<soap:Envelope xmlns:soap=\'http://schemas.xmlsoap.org/soap/envelope/\' xmlns:xsi=\'http://www.w3.org/2001/XMLSchema-instance\' xmlns:xsd=\'http://www.w3.org/2001/XMLSchema\'>' +
    ' <soap:Header>' +
    ' <CrmAuthenticationToken xmlns=\'http://schemas.microsoft.com/crm/2007/WebServices\'>' +
    ' <AuthenticationType xmlns=\'http://schemas.microsoft.com/crm/2007/CoreTypes\'>0</AuthenticationType>' +
    ' <OrganizationName xmlns=\'http://schemas.microsoft.com/crm/2007/CoreTypes\'>TESTE</OrganizationName>' +
    ' <CallerId xmlns=\'http://schemas.microsoft.com/crm/2007/CoreTypes\'>00000000-0000-0000-0000-000000000000</CallerId>' +
    ' </CrmAuthenticationToken>' +
    ' </soap:Header>' +
    ' <soap:Body>' +
    ' <RetrieveMultiple xmlns=\'http://schemas.microsoft.com/crm/2007/WebServices\'>' +
    ' <query xmlns:q1=\'http://schemas.microsoft.com/crm/2006/Query\' xsi:type=\'q1:QueryExpression\'>' +
    ' <q1:EntityName>opportunity</q1:EntityName>' +
    ' <q1:ColumnSet xsi:type=\'q1:ColumnSet\'>' +
    ' <q1:Attributes>' +
    ' <q1:Attribute>new_dtabertura</q1:Attribute>' + 
    ' </q1:Attributes>' +
    ' </q1:ColumnSet>' +
    ' <q1:Distinct>false</q1:Distinct>' +
    ' <q1:Criteria>' +
    ' <q1:FilterOperator>And</q1:FilterOperator>' +
    ' <q1:Conditions>' +
    ' <q1:Condition>' +
    ' <q1:AttributeName>opportunityid</q1:AttributeName>' +
    '<q1:Operator>Equal</q1:Operator>' +
    '<q1:Values>' +
    '<q1:Value xsi:type=\'xsd:string\'>' + TesteId + '</q1:Value>' +
    '</q1:Values>' +
    ' </q1:Condition>' +
    ' </q1:Conditions>' +
    ' </q1:Criteria>' +
    ' </query>' +
    ' </RetrieveMultiple>' +
    ' </soap:Body>' +
    '</soap:Envelope>' +
    '';

    var xmlHttpRequest = new ActiveXObject('Msxml2.XMLHTTP');

    xmlHttpRequest.Open('POST', '/mscrmservices/2007/CrmService.asmx', false);
    xmlHttpRequest.setRequestHeader('SOAPAction','http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple');
    xmlHttpRequest.setRequestHeader('Content-Type', 'text/xml; charset=utf-8');
    xmlHttpRequest.setRequestHeader('Content-Length', xml.length);
    xmlHttpRequest.send(xml);
    var resultXml = xmlHttpRequest.responseXML;

    var entityNodes = resultXml.selectNodes('//RetrieveMultipleResult/BusinessEntities/BusinessEntity');
    for (var i = 0; i < entityNodes.length; i++)
    {
        var entityNode = entityNodes[i];
        var DataNode = entityNode.selectSingleNode('q1:new_dtabertura');
        var Data = (DataNode == null) ? null : DataNode.text;
                    alert(Date.parse(Data));

    }

     

     


    Luiz Henroqie
    segunda-feira, 28 de setembro de 2009 19:48

Respostas

  • Olá Luiz.

    Já passei por um problema parecido com o seu, só que no caso eu tinha que gravar no banco e não ler.
    Aí que descobri que o formato de data que é gravado em banco é YYYY-MM-ddThh:mm:ss+nn:00

    O jeito é tratar essa string, utilizando substrings, para montar um tipo Date.


    Espero que tenha ajudado!
    Abraço.

    • Marcado como Resposta Luizhcota terça-feira, 29 de setembro de 2009 12:40
    terça-feira, 29 de setembro de 2009 12:20

Todas as Respostas

  • Olá Luiz.

    Já passei por um problema parecido com o seu, só que no caso eu tinha que gravar no banco e não ler.
    Aí que descobri que o formato de data que é gravado em banco é YYYY-MM-ddThh:mm:ss+nn:00

    O jeito é tratar essa string, utilizando substrings, para montar um tipo Date.


    Espero que tenha ajudado!
    Abraço.

    • Marcado como Resposta Luizhcota terça-feira, 29 de setembro de 2009 12:40
    terça-feira, 29 de setembro de 2009 12:20
  • Ricardo,

    Obrigado pela atenção. Imaginei que seria assim mesmo, inclusive deste jeito eu consegui, achei que poderia ter um jeito mais "elegante" de fazer.

    Para aqueles que tiverem o mesmo problema segue a minha solução

    var ano = Data.substring(0,4);
    var mes = Data.substring(5,7);
    var dia = Data.substring(8,10);

    var CampData = dia + "/" + mes + "/" + ano;
    Luiz Henroqie
    terça-feira, 29 de setembro de 2009 12:40