À tarde, encontramos um problema na conversão dos formatos de data de MVC e ExtJs. O resultado de serializar um objeto DateTime do lado do servidor .NET é um formato de string, como '/data (1335258540000)/' .
O número inteiro 1335258540000 é na verdade um intervalo de milissegundos entre 1 de janeiro de 1970 e esse datetime. Através de JavaScript, use a função de avaliação para converter esta string de data em um objeto de data com um fuso horário, como segue
Use var date = Eval ('new' + Eval ('/data (1335258540000)/'). Fonte) para obter um objeto JS
Verifique claramente por meio de alerta (data).
Ter 24 de abril 17:09:00 UTC+0800 2012
O exposto acima é uma string obtida automaticamente pela serialização da data do C# JSON. Você também pode escrever uma função para obter esse número através de C#, por exemplo
public Long Millitimestamp (DateTime Thedate) {DateTime D1 = new DateTime (1970, 1, 1); DateTime D2 = thedate.TouniversalTime (); Timespan ts = novo timespan (d2.ticks - d1.ticks); retornar (longo) ts.TotalmillisEconds; }A função acima é a mesma que o número inteiro na sequência obtida usando a serialização JSON.
No entanto, ao retornar ao lado do servidor do cliente, há um problema com a data. Como passar o objeto Data do JavaScript de volta ao lado do servidor?
Primeiro, obtenha esse número inteiro através do getTime () na data do JavaScript e, em seguida, analise o número inteiro no servidor e 'construa' em um objeto C# DateTime. A idéia provavelmente é assim, mas encontrei alguns problemas quando voltei na direção oposta.
Public DateTime ConvertTime (Long MillionTime) {Long TimeTricks = New DateTime (1970, 1, 1) .TICKS + MILHÃO * 10000; retornar novo DateTime (TimeTricks); }Os resultados obtidos através do Converttime descobriram que o tempo era 8 horas a menos, o que é o fuso horário do servidor, o oitava zona do leste, o que significa que 8 horas de nanossegundos devem ser adicionadas, porque a unidade de carimbo de hora de C# é um milionésimo de segundo de segundo, uma hora é 3600 segundos, ou seja, 8*3600*1000000000000000000
Portanto, a função Converttime foi modificada, a correta é a seguinte:
public DateTime ConvertTime (Long MillionTime) {Long TimeTricks = New DateTime (1970, 1, 1) .TICKS + MILÇÃO * 10000 + TimeZone.CurrentTimeZone.GetUtCoffSet (DateTime.now) .Hours * 3600 * (Long) 100000000; retornar novo DateTime (TimeTricks); }O exemplo simples acima da conversão de formatos de tempo e data de JS e C# é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.