मैं यूरोपीय प्रारूप dd/mm/yyyy
का उपयोग कर दिनांक प्रदर्शित करना चाहता हूं लेकिन डेटपइप शॉर्टडेट प्रारूप का उपयोग करके इसे केवल यूएस दिनांक शैली mm/dd/yyyy
का उपयोग करके प्रदर्शित करना है।
मुझे लगता है कि डिफ़ॉल्ट लोकेल en_US है। हो सकता है कि मैं दस्तावेज़ों में अनुपलब्ध हूं लेकिन मैं Angular2 ऐप में डिफ़ॉल्ट लोकेल सेटिंग्स कैसे बदल सकता हूं? या हो सकता है कि डेटपिप पर कस्टम प्रारूप पास करने का कोई तरीका हो?कोणीय 2 में डेटपइप में लोकेल कैसे सेट करें?
उत्तर
Angular2 RC6 के रूप में, आप अपने अनुप्रयोग मॉड्यूल में डिफ़ॉल्ट स्थान सेट कर सकते हैं, एक प्रदाता जोड़कर:
@NgModule({
providers: [
{ provide: LOCALE_ID, useValue: "en-US" }, //replace "en-US" with your locale
//otherProviders...
]
})
मुद्रा/दिनांक/संख्या पाइप स्थान लेने चाहिए। कोणीय/कोर से आयात करने के लिए LOCALE_ID एक OpaqueToken है।
import { LOCALE_ID } from '@angular/core';
अधिक उन्नत उपयोग केस के लिए, आप किसी सेवा से लोकेल चुनना चाहेंगे। लोकेल का समाधान हो जाएगा (एक बार) जब तारीख पाइप का उपयोग कर घटक बनाई गई है:
{
provide: LOCALE_ID,
deps: [SettingsService], //some service handling global settings
useFactory: (settingsService) => settingsService.getLanguage() //returns locale string
}
यह आप के लिए काम करता है आशा है।
मुझे आश्चर्य है कि यह अभी भी कहीं भी दस्तावेज प्रतीत नहीं होता है। दिनांक पाइप पेज पर नहीं (https://angular.io/docs/ts/latest/api/common/index/DatePipe-pipe.html), सामान्य पाइप पेज पर नहीं (https://angular.io/docs /ts/latest/guide/pipes.html) और यह प्रश्न वास्तव में Google पर पहली हिट है (https://www.google.com/search?q=angular%202%20locales&rct=j)। महान खोज –
इसके अलावा: इस लोकेल को सेट करना 'मुद्रा' पाइप (कोणीय 2.0 फ़ाइनल) को प्रभावित नहीं करता है। –
क्या इसका यह भी अर्थ है कि हम लोकेल प्राप्त करने के लिए HTTP अनुरोध का उपयोग कर सकते हैं? पूरी तरह से सुनिश्चित नहीं है कि यह कैसे काम करता है। – Hyperd
आप कुछ इस तरह करते हैं:
{{ dateObj | date:'shortDate' }}
या
{{ dateObj | date:'ddmmy' }}
देखें: https://angular.io/docs/ts/latest/api/common/index/DatePipe-pipe.html
क्षमा करें अगर यह मेरे प्रश्न में स्पष्ट नहीं था, लेकिन यह वही है जो मैं कर रहा हूं लेकिन पैटर्न 'शॉर्टडेट' के साथ और यह केवल यूएस शैली में दिखाता है। समय शैली ठीक है। – nsbm
दूसरा उदाहरण डेटपिप को पास करने वाला एक प्रारूप दिखाता है, जो आप चाहते थे? – Langley
कोशिश की लेकिन यह काम नहीं करता है। तिथि से स्वतंत्र रूप से संख्या '5' दिखाएं। – nsbm
मैं date_pipe.ts में एक नज़र लिया है और यह है ब्याज की जानकारी के दो बिट्स। शीर्ष के निकट दो पंक्तियों निम्नलिखित हैं:
return DateFormatter.format(value, defaultLocale, pattern);
यह मेरे लिए पता चलता है कि तारीख पाइप 'en-US होने के लिए वर्तमान में हार्ड-कोडेड है:
// TODO: move to a global configurable location along with other i18n components.
var defaultLocale: string = 'en-US';
निचले भाग के पास इस लाइन है '।
अगर मैं गलत हूं तो कृपया मुझे प्रबुद्ध करें।
https://github.com/angular/angular/blob/master/modules/@angular/common/src/pipes/date_pipe.ts – julestruong
आप नीचे कोरोला का उत्तर देखना चाहते हैं। यह आज तक अद्यतित है और एक अच्छा समाधान प्रदान करता है। –
मैं एक ही मुद्दे के साथ संघर्ष कर रहा था और इस का उपयोग करते हुए
{{dateObj | date:'ydM'}}
तो, मैं एक समाधान की कोशिश की है, नहीं सबसे अच्छा समाधान मेरे लिए काम नहीं किया है, लेकिन यह काम किया:
{{dateObj | date:'d'}}/{{dateObj | date:'M'}}/{{dateObj | date:'y'}}
मैं हमेशा एक कस्टम पाइप बना सकते हैं।
कॉपी किया गया Google पाइप लोकेल बदल गया और यह मेरे देश के लिए काम करता है यह सकारात्मक है कि उन्होंने इसे सभी लोकेशंस के लिए खत्म नहीं किया है। नीचे कोड है।
import {
isDate,
isNumber,
isPresent,
Date,
DateWrapper,
CONST,
isBlank,
FunctionWrapper
} from 'angular2/src/facade/lang';
import {DateFormatter} from 'angular2/src/facade/intl';
import {PipeTransform, WrappedValue, Pipe, Injectable} from 'angular2/core';
import {StringMapWrapper, ListWrapper} from 'angular2/src/facade/collection';
var defaultLocale: string = 'hr';
@CONST()
@Pipe({ name: 'mydate', pure: true })
@Injectable()
export class DatetimeTempPipe implements PipeTransform {
/** @internal */
static _ALIASES: { [key: string]: String } = {
'medium': 'yMMMdjms',
'short': 'yMdjm',
'fullDate': 'yMMMMEEEEd',
'longDate': 'yMMMMd',
'mediumDate': 'yMMMd',
'shortDate': 'yMd',
'mediumTime': 'jms',
'shortTime': 'jm'
};
transform(value: any, args: any[]): string {
if (isBlank(value)) return null;
if (!this.supports(value)) {
console.log("DOES NOT SUPPORT THIS DUEYE ERROR");
}
var pattern: string = isPresent(args) && args.length > 0 ? args[0] : 'mediumDate';
if (isNumber(value)) {
value = DateWrapper.fromMillis(value);
}
if (StringMapWrapper.contains(DatetimeTempPipe._ALIASES, pattern)) {
pattern = <string>StringMapWrapper.get(DatetimeTempPipe._ALIASES, pattern);
}
return DateFormatter.format(value, defaultLocale, pattern);
}
supports(obj: any): boolean { return isDate(obj) || isNumber(obj); }
}
LOCALE_ID के साथ समाधान बहुत अच्छा है यदि आप एक बार अपने ऐप के लिए भाषा सेट करना चाहते हैं। लेकिन अगर आप रनटाइम के दौरान भाषा बदलना चाहते हैं तो यह काम नहीं करता है। इस मामले के लिए आप कस्टम डेट पाइप लागू कर सकते हैं।
import { DatePipe } from '@angular/common';
import { Pipe, PipeTransform } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
@Pipe({
name: 'localizedDate',
pure: false
})
export class LocalizedDatePipe implements PipeTransform {
constructor(private translateService: TranslateService) {
}
transform(value: any, pattern: string = 'mediumDate'): any {
const datePipe: DatePipe = new DatePipe(this.translateService.currentLang);
return datePipe.transform(value, pattern);
}
}
अब अगर आप TranslateService का उपयोग करके ऐप भाषा बदलने के लिए (ngx-translate देख)
this.translateService.use('en');
अपने एप्लिकेशन में होने स्वरूपों स्वचालित रूप से अपडेट किया जा रहा चाहिए। उपयोग की
उदाहरण:
<p>{{ 'note.created-at' | translate:{date: note.createdAt | localizedDate} }}</p>
<p>{{ 'note.updated-at' | translate:{date: note.updatedAt | localizedDate:'fullDate'} }}</p>
या जाँच मेरी सरल "नोट्स" परियोजना here।
मुझे टेम्पलेट पार्स त्रुटि मिल रही है; फिल्टर 'localizedDate' संकलित नहीं कर सकता मैंने सुझाव के साथ उसी तरह प्रयोग किया था। –
क्या आपने LocalizedDatePipe को सही तरीके से घोषित किया है? मेरी [उदाहरण परियोजना] में pipe.module.ts देखें (https://github.com/milanhlinak/notes/blob/master/notes-ui/src/app/shared/pipes/pipes.module.ts)। –
हां, मैंने इसे पहले हल कर लिया है, @Milan Hlinak मुझे उस समय केवल मेरी टिप्पणी पर उत्तर देना चाहिए था। लेकिन वैसे भी आपकी त्वरित प्रतिक्रिया के लिए धन्यवाद। तुम बहुत अच्छा कर रहे हो। –
AOT के साथ उन लोगों के होने की समस्याओं के लिए, आप यह थोड़ा करने के लिए अलग तरह से एक useFactory साथ की जरूरत है:
export function getCulture() {
return 'fr-CA';
}
@NgModule({
providers: [
{ provide: LOCALE_ID, useFactory: getCulture },
//otherProviders...
]
})
कोणीय 5 के रूप में, आप प्रदाता सरणी – iuliust
'{प्रदान करें: LOCALE_ID, useFactory:() => 'fr-CA'} में एक वसा तीर अभिव्यक्ति का उपयोग कर सकते हैं, 'मेरे लिए चाल थी;) – JoxieMedina
ठीक है, मेरा प्रस्ताव यह समाधान, बहुत ही सरल, का उपयोग कर ngx-translate
import { DatePipe } from '@angular/common';
import { Pipe, PipeTransform } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
@Pipe({
name: 'localizedDate',
pure: false
})
export class LocalizedDatePipe implements PipeTransform {
constructor(private translateService: TranslateService) {
}
transform(value: any): any {
const date = new Date(value);
const options = { weekday: 'long',
year: 'numeric',
month: 'long',
day: 'numeric',
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
};
return date.toLocaleString(this.translateService.currentLang, options);
}
}
angular5
के साथ उपर्युक्त उत्तर अब काम नहीं करता है!
निम्नलिखित कोड:
app.module.ts
@NgModule({
providers: [
{ provide: LOCALE_ID, useValue: "de-at" }, //replace "de-at" with your locale
//otherProviders...
]
})
निम्न त्रुटि के लीड:
Error: Missing locale data for the locale "de-at".
angular5
के साथ आप लोड और इस्तेमाल किया लोकेल फ़ाइल रजिस्टर करने के लिए है स्वयं के बल पर।
app.module.ts
import { NgModule, LOCALE_ID } from '@angular/core';
import { registerLocaleData } from '@angular/common';
import lcoaleDeAt from '@angular/common/locales/de-at';
registerLocaleData(lcoaleDeAt);
@NgModule({
providers: [
{ provide: LOCALE_ID, useValue: "de-at" }, //replace "de-at" with your locale
//otherProviders...
]
})
वास्तव में यदि आपको एन-यूएस को छोड़कर कुछ अन्य लोकेल का उपयोग करने की आवश्यकता है, तो आपको इसे पंजीकृत करना चाहिए। उत्तर के लिए धन्यवाद, @zgue – MikkaRin
- 1. symfony 2 सेट लोकेल डीबी
- 2. कोणीय 2-टाइपस्क्रिप्ट में वैकल्पिक वर्ग पैरामीटर कैसे सेट करें?
- 3. ज़ेंड फ्रेमवर्क 2: लोकेल ग्लोबली कैसे सेट करें?
- 4. त्रुटियों के लिए लोकेल कैसे सेट करें?
- 5. वेबपैक उत्पादन कॉन्फ़िगरेशन में प्रॉक्सी सेट करें कोणीय 2+
- 6. कोणीय 2 में डेटा कैसे समूहित करें?
- 7. डेटपिकर से लोकेल प्रारूप कैसे सेट करें?
- 8. कोणीय सीएलआई में कोणीय 2 को कैसे अपडेट करें
- 9. कोणीय 2 - कोणीय-क्ली: निर्माण पर वैश्विक चर सेट करें
- 10. सिद्धांत 2 में दिनांक कैसे सेट करें?
- 11. Magento 2 लोकेल
- 12. कोणीय 2 के लिए गल्प-टाइपस्क्रिप्ट कैसे सेट करें?
- 13. कोणीय 2 में [(ngModel)] में संख्या कैसे प्राप्त करें?
- 14. रूफिंग में सिम्फनी 2 डिफ़ॉल्ट लोकेल
- 15. कोणीय 2 में विज़ार्ड लागू करें?
- 16. कोणीय 2: @CanActivate में निर्भरता इंजेक्ट करें?
- 17. कोणीय -2 में GUID कैसे बनाएं?
- 18. कोणीय 2 प्रोजेक्ट में JSZip आयात करें
- 19. , ngFor अंदर ngModel में एक गतिशील प्रॉपर्टी सेट कोणीय 2
- 20. एनजी 2-सिग्नलर में प्राधिकरण शीर्षलेख कैसे सेट करें?
- 21. कोणीय 2
- 22. कोणीय 2 (आयनिक 2/कोणीय 2/टाइपस्क्रिप्ट)
- 23. कोणीय में मुद्रा पाइप 2
- 24. कोणीय 2
- 25. कोणीय 2 में एचटीएमएल टेम्पलेट्स
- 26. स्ट्रिंग को कोणीय 2 में कैसे बदलें?
- 27. कोणीय 2 में वर्तमान मार्ग कस्टम डेटा कैसे प्राप्त करें?
- 28. कोणीय 2 में पीडीएफ फ़ाइल को रूट/लिंक कैसे करें?
- 29. कोणीय में धुंध पर फॉर्म मॉडल अपडेट कैसे करें 2
- 30. कोणीय 2 टेम्पलेट्स में enum का उपयोग कैसे करें
मैं यह भी जानना चाहते हैं। मुझे तारीख पाइप दस्तावेज़ मिल गए हैं जो प्रारूप स्ट्रिंग में वाई के एम 'और डी के क्रम को अनदेखा कर दिया गया है क्योंकि आदेश लोकेल द्वारा निर्धारित किया गया है। लेकिन लोकेल को सेट (या यहां तक कि पाने) के बारे में कोई संकेत नहीं है। –