datetime - कोणीय 2 दिनांक पाइप IE 11 और किनारे 13/14 में काम नहीं करता है




angular format (6)

मैं कोणीय 2.0 फ़ाइनल का उपयोग कर रहा हूं, और जब मैं प्रारूप स्ट्रिंग में घंटे और मिनट जोड़ता हूं तो मेरे पास तिथियों का गलत प्रारूप होता है:

घटक के टेम्पलेट में, मेरे पास है:

<th id="lastexecution">{{dto.LastExecution | date:'yyyy-MM-dd HH:mm:ss'}}</th>

आईई 11 में आउटपुट दिनांक है:

2016-09-27 15:00:9/27/2016 3:53:46 PM:9/27/2016 3:53:46 PM

{{Dto.LastExecution | के साथ तारीख: 'yyyy-MM-dd'}}

आईई 11 में आउटपुट दिनांक सही है:

2016-09-27

पैकेज.जेसन में मैं घटक संस्करण का उपयोग करता हूं:

{
  "name": "ima_sentinel",
  "version": "1.0.0",
  "description": "QuickStart package.json from the documentation, supplemented with testing support",
  "scripts": {
    "start": "tsc && concurrently \"tsc -w\" \"lite-server\" ",
    "docker-build": "docker build -t ima_sentinel .",
    "docker": "npm run docker-build && docker run -it --rm -p 3000:3000 -p 3001:3001 ima_sentinel",
    "pree2e": "npm run webdriver:update",
    "e2e": "tsc && concurrently \"http-server -s\" \"protractor protractor.config.js\" --kill-others --success first",
    "lint": "tslint ./app/**/*.ts -t verbose",
    "lite": "lite-server",
    "postinstall": "typings install",
    "test": "tsc && concurrently \"tsc -w\" \"karma start karma.conf.js\"",
    "test-once": "tsc && karma start karma.conf.js --single-run",
    "tsc": "tsc",
    "tsc:w": "tsc -w",
    "typings": "typings",
    "webdriver:update": "webdriver-manager update"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@angular/common": "2.0.0",
    "@angular/compiler": "2.0.0",
    "@angular/core": "2.0.0",
    "@angular/forms": "2.0.0",
    "@angular/http": "2.0.0",
    "@angular/platform-browser": "2.0.0",
    "@angular/platform-browser-dynamic": "2.0.0",
    "@angular/router": "3.0.0",
    "@angular/upgrade": "2.0.0",
    "angular2-in-memory-web-api": "0.0.20",
    "bootstrap": "^3.3.6",
    "core-js": "^2.4.1",
    "linqts": "^1.6.0",
    "reflect-metadata": "^0.1.3",
    "rxjs": "5.0.0-beta.12",
    "signalr": "^2.2.1",
    "systemjs": "0.19.27",
    "typescript-collections": "^1.1.9",
    "zone.js": "^0.6.23"
  },
  "devDependencies": {
    "concurrently": "^2.2.0",
    "lite-server": "^2.2.0",
    "typescript": "^2.0.2",
    "typings": "^1.0.4",
    "canonical-path": "0.0.2",
    "http-server": "^0.9.0",
    "tslint": "^3.7.4",
    "lodash": "^4.11.1",
    "jasmine-core": "~2.4.1",
    "karma": "^1.2.0",
    "karma-chrome-launcher": "^0.2.3",
    "karma-cli": "^0.1.2",
    "karma-htmlfile-reporter": "^0.2.2",
    "karma-jasmine": "^0.3.8",
    "protractor": "^3.3.0",
    "rimraf": "^2.5.2"
  },
  "repository": {}
}

Angular2 DatePipe API दस्तावेज़ीकरण से।

"यह पाइप अंतर्राष्ट्रीयकरण API का उपयोग करता है। इसलिए यह केवल क्रोम और ओपेरा ब्राउज़र में विश्वसनीय है।


अद्यतन - इस समस्या का कारण बनने वाला कोणीय मुद्दा कोणीय 5 में हल किया गया है। यदि आप कर सकते हैं, तो मैं इस समस्या से बचने के लिए इसका उपयोग करने की अनुशंसा करता हूं।

यदि आप अभी भी कोणीय 4 या पुराने का उपयोग कर रहे हैं - एक वर्कअराउंड के रूप में, मैंने अंगुलर के बजाय पल फॉर्मेटर का उपयोग करने के लिए एक पाइप बनाया है:

import { Pipe, PipeTransform } from '@angular/core';
import * as moment from 'moment';

@Pipe({
    name: 'datex'
})

export class DatexPipe implements PipeTransform {
    transform(value: any, format: string = ""): string {
        // Try and parse the passed value.
        var momentDate = moment(value);

        // If moment didn't understand the value, return it unformatted.
        if (!momentDate.isValid()) return value;

        // Otherwise, return the date formatted as requested.
        return momentDate.format(format);
    }
}

जिसका उपयोग तब किया जा सकता है:

{{exampleDate | datex:'DD/MM/YYYY HH:mm:ss'}}

जिस तारीख में आप पास करते हैं वह कुछ ऐसा होना चाहिए जो पल पार्स कर सकता है ( प्रासंगिक पल प्रलेखन देखें ) और प्रारूप स्ट्रिंग एक पल है, कोणीय, दिनांक स्वरूपण स्ट्रिंग नहीं, जैसा कि यहां प्रलेखित है

मैंने आईई 11, क्रोम और फ़ायरफ़ॉक्स में इसका परीक्षण किया है और यह लगातार व्यवहार करता है।

आपको यह सुनिश्चित करना होगा कि आपके पैकेज.जेसन में निर्भरता के रूप में क्षण जोड़ा गया है, उदाहरण के लिए:

{
  "name": "demo",
  "version": "0.0.1",
  // snip
  "dependencies": {
    // snip
    "moment": "^2.15.1",
    // snip
  },
  "devDependencies": {
    //snip
  }
}

... और सुनिश्चित करें कि आपके systemjs.config.js को अद्यतन किया गया है, इसलिए यह पल का पता लगा सकता है:

map: { 
  'moment': 'npm:moment' 
} 
packages: { 
  moment: { main: './moment.js', defaultExtension: 'js' } 
}

इस तरह के प्रारूप लिखने की कोई आवश्यकता नहीं है {{date:dd/MM/yyyy hh:mm:ss a}}
IE11 या EDGE केवल इस प्रारूप के साथ समस्या हो रही है।

यहां कुछ विकल्प दिए गए हैं:

पूर्व 1: नई तिथि और समय:

var date = new Date().toLocaleDateString();
var time = new Date().toLocaleTimeString();

var datetime = date + " " + time;

पूर्व 2: पहले से ही आपके पास datetime और आप कन्वर्ट करना चाहते हैं। निचे देखो:

datetime = "3/23/2018 11:43:51 AM"

हम तिथि और समय विभाजित कर सकते हैं।

var date = new Date(datetime).toLocaleDateString();
var time = new Date(datetime).toLocaleTimeString();

var splitdatetime = date + " " + time;

यह कोणीय 4 है। यह सभी ब्राउज़रों के लिए ठीक काम करता है।


उपरोक्त @ मार्क-ह्यूजेस से उत्तर के संबंध में, एपीआई दस्तावेज के समय से:

date_expression | डेटा प्रारूप]

अभिव्यक्ति एक दिनांक वस्तु या संख्या (यूटीसी युग के बाद मिलीसेकंड) या एक आईएसओ स्ट्रिंग है

Reference

तो मान किसी भी प्रकार का होना चाहिए, और आप मूल्य प्रकार की जांच करने के लिए moment().isValid() का उपयोग कर सकते हैं

@Pipe({name: 'datex'})
export class DatexPipe implements PipeTransform {
    transform(value: any, format: string = ""): string {
       return moment(value).isValid()? moment(value).format(format) : value; 
    }
}

कोणीय 5.x में काम करते हैं

कोणीय के संस्करण 5.x में यह समस्या एज (v.38.14393.1066.0) में और आईई (v.11.1198.14393.0) में सही ढंग से काम कर रही है, अपने संस्करण में परीक्षण करें!

लाइव उदाहरण: प्लंकर कोणीय 5.x

संबंधित समस्या जिसने समस्या हल की (अगर मुझे कुछ असंगत पाया गया): https://github.com/angular/angular/issues/9524

उत्तर जिसमें कोणीय दिनांक पाइप के पूरे ऑपरेशन शामिल हैं।


कोणीय के लिए moment.js पाइप

अंक का जवाब बहुत अच्छा है और यह तब तक उपयोग किया जा रहा था जब तक मुझे यह सरल समाधान नहीं मिला जो अच्छी तरह से प्रलेखित है।

कोणीय के लिए moment.js पाइप

यह मॉड्यूल कोणीय 2.0 और ऊपर के साथ काम करता है।





internet-explorer-11