Eu to fazendo assim, vejam o que vc's acham da ideia
Acho mais simples usar um BIGINT para as datas gravar nele jogar um
timestamp...
no flex qdo eu vou enviar a data que o registro foi adicionado por
exemplo pego com new Date().getTime();
na hora de recuperar e mostrar num datagrid uso uns metodos que eu fiz
numa classe estatica pra formatar no labelFunction da coluna do dg
ex:
labelFunction="DateUtil.mostraDataHora"
pra pegar de um DateField por exemplo fica assim:
<mx:DateField change="suaVariavel=DateUtil.pegaData(event)"/> ou da
pra fazer + bonitinho criando um handler e passando o event pro metodo
pegaData
minha "crassezinha", ta bem crua ainda, mas ta resolvendo:
package helpers
{
import mx.controls.dataGridClasses.DataGridColumn;
import mx.events.CalendarLayoutChangeEvent;
public class DateUtil
{
public function DateUtil()
{
}
public static function agora(sepData:String = "/",
sepEntre:String =
" - ", sepHora:String = ":"):String
{
var agora:Date = new Date();
var ano:int = agora.fullYear;
var mes:int = agora.month;
var dia:int = agora.date;
var horas:int = agora.hours;
var minutos:int = agora.minutes;
var segundos:int = agora.seconds;
var retorno:String = (dia < 10 ? "0"+dia : dia) +
sepData;
retorno += (mes < 10 ? "0"+(mes+1) : (mes+1)) + sepData
+ (ano <
10 ? "0"+ano : ano);
retorno += sepEntre + (horas < 10 ? "0"+horas : horas)
+ sepHora;
retorno += (minutos < 10 ? "0"+minutos : minutos) +
sepHora;
retorno += (segundos < 10 ? "0"+segundos : segundos);
return retorno;
}
public static function mostraData(data:Object,
column:DataGridColumn):String
{
var timestamp:Number = data[column.dataField];
if (timestamp != 0)
{
return mostraDH(timestamp, false, false, false);
}
else
{
return "";
}
}
public static function mostraDataHora(data:Object,
column:DataGridColumn):String
{
if (data[column.dataField] != 0)
{
return mostraDH(data[column.dataField], true,
false);
}
else
{
return "";
}
}
public static function mostraDH(timestamp:Number, hora:Boolean =
false, segundos:Boolean = false, diaSemana:Boolean = true):String
{
if (timestamp > 0)
{
var data_dt:Date = new Date();
data_dt.setTime(timestamp);
var dias_arr:Array = new Array("Dom", "Seg",
"Ter", "Qua", "Qui",
"Sex", "Sab");
var data_str:String = "";
if (diaSemana)
{
data_str += dias_arr[data_dt.getDay()]
+ ", ";
}
data_str += (data_dt.getDate() < 10 ? "0" +
data_dt.getDate() :
data_dt.getDate()) + "/";
data_str += (data_dt.getMonth()+1) < 10 ? "0" +
(data_dt.getMonth()
+1) : (data_dt.getMonth()+1);
data_str += "/" +
String(data_dt.getFullYear()).slice(2,4);
if(hora)
{
data_str += " - "+(data_dt.getHours() <
10 ?
"0"+data_dt.getHours() : data_dt.getHours());
data_str += ":"+(data_dt.getMinutes() <
10 ?
"0"+data_dt.getMinutes() : data_dt.getMinutes());
if (segundos)
{
data_str +=
":"+(data_dt.getSeconds() < 10 ?
"0"+data_dt.getSeconds() : data_dt.getSeconds());
}
}
}
else
{
data_str = "";
}
return data_str;
}
public static function
pegaData(event:CalendarLayoutChangeEvent):String
{
trace("Data: " + event.target.selectedDate);
if (event.target.selectedDate)
{
var data_dt:Date = event.target.selectedDate;
return data_dt.getTime().toString();
}
else
{
return "";
}
}
public static function segHMS(segundos:int):String
{
var seconds:int = Math.floor(segundos%60);
var minutes:int = Math.floor((segundos/60)%60);
var hours:int = Math.floor((segundos/3600)%24);
var hms:String = (hours > 0 ? (hours < 10 ? "0"+hours :
hours)
+":" : "") +
(minutes < 10 ? "0"+minutes : minutes)
+ ":"
+ (seconds < 10 ? "0"+seconds :
seconds);
return hms;
}
}
}
On Feb 15, 10:46 am, "Diogo Vieira" <[EMAIL PROTECTED]> wrote:
> Ola Leandro,
>
> Deixa eu ver se entendi bem...
>
> Na horaUTC mostra o valor 11? E é este que vc está querendo certo?
> Mas esta mostrando por exemplo o valor 20 que é a hora normal certo?
>
> Então vc esta querendo que mostre o valor da hora UTC em vez da normal... é
> isso?
> Se for isso basta vc fazer sua variavel de data receber no atributo de hora
> normal o valor da hora UTC
>
> EX: supondo que sua hora esta vindo de um event.result
>
> var data:Date = new Date();
>
> Date = event.result;
> Date.hours = Date.hoursUTC;
>
> Veja se isso resolve e posta ae novamente!
> Abraço!
>
> Em 15/02/08, Rafael Francisco Thibes <[EMAIL PROTECTED]>
> escreveu:
>
>
>
> > Bom dia Leandro,
>
> > Já foi discutido na lista, veja o tópico: Formatar Data - Flex + Mysql
>
> >http://groups.google.com/group/flexdev/browse_thread/thread/3c9d7a5f4...
> > Caso não resolva poste novamente.
>
> > um abraço,
> > Rafael
>
> > leandrorlemos escreveu:
> > > Bom dia, pessoal gostaria de saber como eu faço para obter um objeto
> > > date exatamente como eu gravei no banco de dados, seu eu gravei
> > > 15/02/2008 11:00, como eu faria para obter exatamente essa data, pois
> > > o Flex fica alterando ela, eu sei que tem o esquema do UTC e tal, mas
> > > se eu gravei 11 hs na tabelas eu quero que seja 11hs, alguem sabe como
> > > eu faço isso?
>
> > _______________________________________________________
> > Yahoo! Mail - Sempre a melhor opção para você!
> > Experimente já e veja as novidades.
> >http://br.yahoo.com/mailbeta/tudonovo/
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---