2017-12-25 10 views
0

ExtJS 4.2.3を使用して、私はテキストフィールドを持つFORMを持っています。私は店からフィールドに価値を得る必要があります。希望のフォーマットでデータをフォーマットしようとした際に問題が発生しました。 DD-MM-YYYYにデータをフォーマットするための構文の助けを求める。ソースのExt JS形式のデータを「DD-MM-YYYY」

データ:私は何を得る

Form_window.query('textfield[name="DateField"]')[0].setValue(NewDATA_store.getAt(1).get('DateData')) 

Mon Dec 08 2014 00:00:00 GMT+0300 (RTZ 2 (winter))

結果、私は必要なもの:/Date(1417986000000)/

でデータを取得しようとした後08.12.2014

+0

datefieldの代わりにtextfieldを使用する特別な理由はありますか? http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.form.field.Date – josei

+0

フィールドに日付のみを表示する場合は、次のconfigsを持つdatefieldを使用します。readOnly:true、フォーマット: 'dmY' – josei

答えて

1

あなたがこののExt.Date.formate()方法を使用する必要が利用できます。

Ext.Dateが必要とされ、ロードされた場合、それは利便性のために、このオブジェクトにすべてのメソッド/プロパティをコピーすることを日付の注意に対処するための便利な静的メソッドのDateクラス集合。

使用例(あなたが文字リテラルとしてそれらをレンダリングするために「\」で書式指定子をエスケープする必要があることに注意してください):このFIDDLE

//Current date 
var dt = new Date(); 
console.log(Ext.Date.format(dt, 'Y-m-d')); // 2017-12-26 
console.log(Ext.Date.format(dt, 'F j, Y, g:i a')); //December 26, 2017, 11:28 am 
console.log(Ext.Date.format(dt, 'l, \\t\\he jS \\of F Y h:i:s A')); //Tuesday, the 26th of December 2017 11:28:02 AM 

、私は「テキストフィールド」、formを使用してデモを作成していおよびstore。これがあなたを助けたり、あなたを導くことを願っています。

Ext.create('Ext.data.Store', { 
    storeId: 'dateStore', 
    fields: [{ 
     name: 'DateData', 
     type: 'date' 
    }], 
    data: [{ 
     DateData: new Date() 
    }] 
}); 

Ext.create('Ext.form.Panel', { 
    title: 'Simple Form', 
    bodyPadding: 5, 
    width: 350, 

    layout: 'anchor', 
    defaults: { 
     anchor: '100%' 
    }, 

    // The fields 
    defaultType: 'textfield', 
    items: [{ 
     fieldLabel: 'Today Date', 
     name: 'DateField', 
     readOnly: true 
    }], 
    renderTo: Ext.getBody(), 
    listeners: { 
     afterrender: function (form) { 
      var store = Ext.data.StoreManager.lookup('dateStore'), 
       date = store.getAt(0).get('DateData'); 

      form.down('[name=DateField]').setValue(Ext.Date.format(date, 'd.m.Y')); 
     } 
    } 
}); 
+0

Thx、それは素晴らしい作品です。 – Dmitry

+0

心のこもった歓迎@ドミトリー –

1

は、以下のことを試してみてください。

var inputDate = new Date('Mon Dec 08 2014 00:00:00 GMT+0300 (RTZ 2 (winter))'); 
var output = Ext.Date.format(inputDate, 'd.m.Y'); // will output: 08.12.2014 
+0

thx、それも動作します。 – Dmitry

0

私はES6を使用してソリューションを作ります。 letはvarと似ていますが、let宣言が宣言されているコンテキストのみを取得します。場合によっては関数、他の時はfor、if ... var宣言は親関数のコンテキストを取得します。それはforsやifsや他の人たちが機能するのを尊重しないということを意味します。私が提供する機能は機能しています。 ExtJSのDateシングルトンクラスで

let formatDate = (param) => { 
    let day = param.getDate() < 10 ? '0' + param.getDate() : param.getDate(); 
    let month = (param.getMonth()+1); 
    let year = param.getFullYear(); 

    return day +"."+ month +"."+ year; 
} 

let date = new Date("Mon Dec 08 2014 00:00:00 GMT+0300 (RTZ 2 (winter))"); 

window.console.log(formatDate(date));