ie421.NET

面对技术,你别无选择,.NET世界是如此精彩,而我们要做的就是:Thinking More

博客园 首页 新随笔 联系 订阅 管理

WCF生成JSON的日期型为:Date(1213545600000 + 0800),该类型为UTC的日期格式,可以通过new Date(1213545600000 + 0800)转化为日期对象,然后获取值。如:(new Date(1213545600000 + 0800)).toLocaleDateString()结果为2008616日。

如果在ExtJs中使用时没有进行转换则会显示NaN年NaN月NaN日

ExtJs中使用方式如下:



//这个函数演示了怎样把服务器端的DateTime类型转为Javascript的日期

    
function renderOnLastUpdateDate(value, p, record) {

        
var jsondate = record.data.lastChange;

        
return eval("new " + jsondate.substr(1, jsondate.length - 2)).toLocaleDateString();

    }

// 创建Grid

    
var grid = new Ext.grid.GridPanel({

        store: store,

        columns: [

            { id: 
'company', header: "公司", width: 160, sortable: true, dataIndex: 'company' },

            { header: 
"单价", width: 75, sortable: true, renderer: 'usMoney', dataIndex: 'price' },

            { header: 
"变动", width: 75, sortable: true, renderer: change, dataIndex: 'change' },

            { header: 
"变动百分比", width: 75, sortable: true, renderer: pctChange, dataIndex: 'pctChange' },

            { header: 
"最后更新", width: 100, sortable: true, renderer: renderOnLastUpdateDate, dataIndex: 'lastChange' }

        ],

        stripeRows: 
true,

        autoExpandColumn: 
'company',

        height: 
350,

        width: 
600,

        title: 
'股市行情',

        viewCofig: { columnsText: 
'', sortAscText: '升序', sortDescText: '降序' }

    });

 

ExtJs将日期数据通过JSON方式传送回服务器时,需要将日期转换为UTC格式,转换方法如下:



/**

 *ConvertFormValues:转化从表单获取的值(Object)对象为WCF需要的Object

 *formvalue:从表的获取的值Object

 *datefieldname:表单值的日期型字段名,多个用","分开

 *ResultObject :返回值 Object

 
*/

     
function ConvertFormValue(formvalue,datefieldname){ 

         
var ResultObject = new Object();

         
for (var prop in formvalue) { 

         
if(datefieldname.indexOf(prop) != -1){

              
var dt = StrToDate(formvalue[prop]); //字符串转化为日期

              ResultObject[prop] 
= ""/Date("+Date.UTC(dt.getFullYear(),dt.getMonth(),dt.getDate())+")"/"; //转化为UTC日期

         }

         else if (formvalue[prop] != 
""){

              ResultObject[prop] = formvalue[prop];

             }

         } 

         return ResultObject; 

      } 

     /**私有方法**/

     function StrToDate(str){

          var arys = new Array();

          arys=str.split('-');

          var newDate=new Date(arys[0],arys[1]-1,arys[2]);

          return newDate;

     }

可以参考http://www.cnblogs.com/xiaozhuang/archive/2007/12/18/1004382.html

posted on 2008-08-26 16:30  ie421  阅读(453)  评论(0编辑  收藏  举报