Amigos se puderem me ajudar eu agradeço muito.
Acho que como a maioria no inicio um dos maiores problemas com o desenvolvimento é trabalhar com datas.
Segue um print da tela de cadastro de funcionários que estou fazendo em Flex com java, estou encaminhando tambem tanto a classe flex como a java para terem uma noção melhor.
Como podem notar tenho uma mensagem enviada pelo Alert no Flex e um JOptionPane no java, para tentar demonstrar o meu problema.
O que estou fazendo é o seguinte.
No flex, carrego uma classe ActionScript com a estrutura dos dados que tenho em minha tela.
Passo este objeto para o Java onde lá tenho uma classe com a mesma estrutura.
O problema é que antes de chamar a classe java, estou analisando o valor do campo data de nascimento, que contem o valor 21 jan 1974 e a primeira coisa que faço na classe java e verificar o valor do mesmo campo. Mas dentro do java ele esta carregado como 20 01 1974, portando com o valor do dia errado.
Se alguém puder me dar uma dica do que pode estar acontecendo eu agradeço.
E depois de resolver isso, vou gravar estas informações no banco de dados, como eu consigo colocar a data no formato correto dentro do java, pois ela esta mostrando ano/mês/dia e para carregar o banco eu preciso mudar para dia/mês/ano.
Desde ja agradeço a atenção.
Problemas com Data - Valor passado do flex para o java diferentes. [RESOLVIDO]
5 Respostas
R
Oi, vamos ver se te ajuda.
Para trabalhar com a data criei um custom para o dateField
package custom{
import mx.controls.DateField;
import mx.events.FlexEvent;
public class DataFieldPt extends DateField{
private const diasNomes:Array = ["D","S","T","Q","Q","S","S"];
private const mesesNomes:Array = ["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"];
public function DataFieldPt() {
super();
this.width=95;
dayNames=diasNomes;
monthNames=mesesNomes;
formatString="DD/MM/YYYY";
restrict="0-9";
editable=true;
showToday=true;
yearNavigationEnabled=true;
// Mostrar Data Atual text=UtilDateField.dateToString(new Date());
addEventListener(FlexEvent.VALUE_COMMIT,completar);
}
private static function completar(event:FlexEvent):void {
var str:String = event.target.text as String;
if ( str.charAt(2) != "/" || str.charAt(5) != "/" ) {
var mask:String;
var dataAtual:Date = new Date();
if ( str.length == 2 ) {
mask = str.substr(0, 2) + "/" + (dataAtual.getMonth()+1).toString() + "/" + dataAtual.getFullYear();
event.target.text = mask;
}
else if ( str.length == 4 ) {
mask = str.substr(0, 2) + "/" + str.substr(2,2) + "/" +
dataAtual.getFullYear().toString();
event.target.text = mask;
}
else if ( str.length == 6 ) {
mask = str.substr(0, 2) + "/" + str.substr(2,2) + "/" +
str.substr(4, 4);
event.target.text = mask;
}
else if ( str.length == 8 ) {
mask = str.substr(0, 2) + "/" + str.substr(2,2) + "/" +
str.substr(4, 4);
event.target.text = mask;
}
}
}
}
}
Já no Usuarios.as considero a data como uma String
public var dt_nasc:String;
E qdo qro carregar as informações faço o seguinte:
ti_dt_nasc.text = UtilDateField.StringToDate(dados.dt_nasc);
Espero ter ajudado 
Muito obrigado rosequadra.
Vou implementar essa funcao no meu projeto e fazer os testes.
R
Ok, nos informe do resultado 
Acabei de fazer os teste.
Deu tudo certo, quando trabalho com valor String no flex e java, não ocorreu de perder o valor para o dia. E a sua implementação da classe DataFieldPt, ficou show.
Mais uma vez, obrigado pela ajuda.
.
R
Que bom que deu tudo certo 
Criado 18 de janeiro de 2012
Ultima resposta 26 de jan. de 2012
Respostas 5
Participantes 2