AngularJS - नियंत्रक में दिनांक परिवर्तित करें


114

क्या कोई मुझे यह सुझाव दे सकता है कि इस 1387843200000प्रारूप से दिनांक को इस में कैसे परिवर्तित किया जाए24/12/2013 मेरे नियंत्रक के अंदर किया जाए ?

सिर्फ FYI करें मेरी तारीखें इस तरह से संग्रहीत हैं और जब फॉर्म को संपादित करने के लिए बाध्यकारी है input type="date" फ़ील्ड के बिल्कुल भी आबाद नहीं किया जा रहा है।

#Plunker डेमो यहाँ।

EditCtrl

app.controller("EditCtrl", [ "$scope", "$filter", "db" function ($scope, $filter, db){

    // this gets me an item object
    var item = db.readItem();

    // item date = 1387843200000
    // this returns undefined 
    item.date = $filter('date')(date[ item.date, "dd/MM/yyyy"]);

}]);

Edit.html - टेम्पलेट

<form name="editForm" class="form-validate">

        <div class="form-group">
            <label for="date">Event date.</label>
            <input type="date" class="form-control" ng-model="event.date" id="date" required />
        </div>

        <a href="#/" class="btn btn-danger ">Cancel</a>
        <button id="addEvent" class="btn btn-primary pull-right" ng-disabled="isClean() || editForm.$invalid" ng-click="saveEvent()">Save event.</button>

    </form>

1
आपको नियंत्रक में बदलने की आवश्यकता क्यों है? यदि आपको केवल डिस्प्ले-सक्षम मान की आवश्यकता है, तो आप दिनांक फ़िल्टर को अपने दृश्य में दिनांक स्वरूपित करने के लिए उपयोग कर सकते हैं।
जस्टिन निस्नेर

@JustinNiessner - मेरी तारीखें इस तरह से संग्रहीत हैं और जब input type="date"फ़ील्ड के साथ फ़ॉर्म को संपादित करने के लिए बाध्य नहीं किया जा रहा है
Iladarsda

1
आप moment.js AngularJS दिनांक समय फिल्टर का उपयोग कर सकते हैं - github.com/urish/angular-moment
वीरेंद्र

जवाबों:


212
item.date = $filter('date')(item.date, "dd/MM/yyyy"); // for conversion to string

http://docs.angularjs.org/api/ng.filter:date

लेकिन अगर आप HTML5 प्रकार = "तिथि" का उपयोग कर रहे हैं तो आईएसओ प्रारूप yyyy-MM-dd MUST का उपयोग किया जाना चाहिए।

item.dateAsString = $filter('date')(item.date, "yyyy-MM-dd");  // for type="date" binding


<input type="date" ng-model="item.dateAsString" value="{{ item.dateAsString }}" pattern="dd/MM/YYYY"/>

http://www.w3.org/TR/html-markup/input.date.html

नोट: पैटर्न का उपयोग = "" प्रकार के साथ = "दिनांक" गैर-मानक दिखता है, लेकिन यह क्रोम 31 में अपेक्षित तरीके से काम करता प्रतीत होता है।


नमस्ते, मैंने सुझाए अनुसार लागू करने की कोशिश की, लेकिन यह मेरे लिए काम नहीं कर रहा है।
मुकुन

नमस्ते, मैंने सुझाए अनुसार लागू करने की कोशिश की, लेकिन यह मेरे लिए काम नहीं कर रहा है। वसंत webservice से मेरी प्रतिक्रिया {"basicPersonalInfo": {"empNo": "04005001", "dob": 490645800000}, "communicationInfo": null}, मुझे इसे अपने बूटस्ट्रैप / HTML5 तिथि इनपुट क्षेत्र में प्रदर्शित करने की आवश्यकता है। मैंने अपने कंट्रोलर में $ गुंजाइश की तरह फिल्टर का इस्तेमाल किया ।basicInfo = BasicInformationService.query (); $ गुंजाइश.basicInfo। $ वादा .then (फ़ंक्शन (डेटा) {$ गुंजाइश.basicInfo.basicPersonalInfo.dob = $ फ़िल्टर ('तिथि') (data.basicPersonal.fo.dob, "yyy-MM-dd");});); किसी भी मदद की सराहना की है
Mukun

1
ठीक है मैंने इस तरह अपने नियंत्रक में स्वरूपण को बदल दिया और यह काम करने लगता है, निश्चित नहीं कि अगर यह सही तरीका है। $ गुंजाइश.basicInfo.basicPersonalInfo.dob = नई तिथि ($ फ़िल्टर ('दिनांक') (data.basicPersonalInfo.dob, "yyyy-MM-dd");
मुकुन

एपीआई तारीख से मेरी तारीख इस तरह आ रही है: "2017/12/15" लेकिन ऐसा करना {{M.DateTime | दिनांक: 'dd-MM-yyyy'}} दिनांक स्वरूप नहीं बदल रहा है। मैं इसे अभिव्यक्ति के अंदर कैसे प्रारूपित करूं?
विशाल सिंह

16

एक फ़िल्टर बनाएं। Js और आप इसे पुन: प्रयोज्य बना सकते हैं

angular.module('yourmodule').filter('date', function($filter)
{
    return function(input)
    {
        if(input == null){ return ""; }
        var _date = $filter('date')(new Date(input), 'dd/MM/yyyy');
        return _date.toUpperCase();
    };
});

राय

<span>{{ d.time | date }}</span>

या नियंत्रक में

var filterdatetime = $filter('date')( yourdate );

कोणीय js में दिनांक फ़िल्टरिंग और स्वरूपण।


1
ऐसा लगता है कि पहले से ही एंगुलरजेएस
AlikElzin-kilaka

1

यहां सभी समाधान वास्तव में मॉडल को इनपुट से नहीं बांधते हैं क्योंकि आपको अपनी वस्तु के dateAsStringरूप dateमें सहेजे जाने के लिए वापस बदलना होगा (फॉर्म जमा होने के बाद नियंत्रक में)।

यदि आपको बाध्यकारी प्रभाव की आवश्यकता नहीं है, लेकिन सिर्फ इसे इनपुट में दिखाने के लिए,

एक सरल हो सकता है:

<input type="date" value="{{ item.date | date: 'yyyy-MM-dd' }}" id="item_date" />

फिर, यदि आप नियंत्रक में पसंद करते हैं, तो आप संपादित तारीख को इस तरह से बचा सकते हैं:

  $scope.item.date = new Date(document.getElementById('item_date').value).getTime();

जागरूक रहें: अपने नियंत्रक में, आपको अपने itemचर को $scope.itemइस रूप में काम करने के लिए घोषित करना होगा।


1

मैं जावास्क्रिप्ट में सुझाव देता हूं:

var item=1387843200000;
var date1=new Date(item);

और फिर तारीख 1 एक तारीख है।


हाँ आपका अधिकार जहाँ हम अपने समय के मोहर को तारीख में परिवर्तित करना चाहते हैं
मका देवेंद्रवर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.