我正在使用date
管道格式化我的日期,但我无法获得我想要的确切格式而无需解决方法.我是错误地理解管道还是不可能?
//our root app component
import {Component} from 'angular2/core'
@Component({
selector: 'my-app',
providers: [],
template: `
<div>
<h2>Hello {{name}}</h2>
<h3>{{date | date: 'ddMMyyyy'}}, should be
{{date | date: 'dd'}}/{{date | date:'MM'}}/{{date | date: 'yyyy'}}</h3>
</div>
`,
directives: []
})
export class App {
constructor() {
this.name = 'Angular2'
this.date = new Date();
}
}
Run Code Online (Sandbox Code Playgroud)
我想显示使用欧洲格式的日期dd/MM/yyyy
,但使用DatePipe shortDate格式只使用美国日期格式显示MM/dd/yyyy
.
我假设默认语言环境是en_US.也许我在文档中遗漏了但是如何更改Angular2应用程序中的默认语言环境设置?或者是否有某种方法可以将自定义格式传递给DatePipe?
我需要在服务和指令脚本文件中使用angular2的日期管道(不仅仅是HTML).
有人有想法吗?
无法上传代码有些政策限制,对不起.
我在每个对象中都有一个日期值,我可以像这样打印:
<td> {{competition.compStart }}</td>
Run Code Online (Sandbox Code Playgroud)
以下是它的外观:
1931-05-31T00:00:00.000+0000
Run Code Online (Sandbox Code Playgroud)
为了更改格式以使其更具可读性我正在使用Angular日期管道:
<td> {{competition.compStart | date : "dd/MM/yyyy"}}</td>
Run Code Online (Sandbox Code Playgroud)
有了这个结果:
30/05/1931
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它显示的是前一天(5月30日而不是5月31日).
据我了解,问题与时区有关,因为我在阿根廷,我们有GMT-3,然后31点零下3小时的00:00将是5月30日晚上9点.
那么我怎样才能让它花费时间从字面上看而不是根据时区处理它,但仍然在管道中应用格式?
我有一个Angular日期变量today
,我正在使用日期管道,如下所示:
{{today | date:'LLLL d'}}
Run Code Online (Sandbox Code Playgroud)
2月13日
但是,我想让它看起来像这样:
2月到目前为止13天
当我尝试一种天真的方法,我得到这个结果:
{{today | date:'d days so far in LLLL'}}
Run Code Online (Sandbox Code Playgroud)
13 13PM201818 2月18日fPMr
这是因为,例如d
指的是当天.
如何在Angular日期管道中转义这些字符?我尝试了\d
这样,但结果并没有随着添加的反斜杠而改变.
我有休息服务,它返回一个对象集合,其中一个字段是日期字符串(ISO-8601格式),日期值如下
"createdDate":"2017-02-21T12:56:50.907",
在angular4 UI中,我将DatePipe格式化为上述日期
{{resultItem.createdDate | 日期: '短'}}
而且我的错误转换如下: 2017年2月21日,上午7:56
而不是2/21/ 2017,0:56 AM
我想使用 DatePipe 转换数字(代表秒)以获得如下结果:
00:00:05
我试过用 DatePipe 这样做:
<label>No timezone (default) {{ 5 * 1000 | date:'h:mm:ss'}}</label>
Run Code Online (Sandbox Code Playgroud)
但它产生的结果包含时区 +4(这不是我想要的):
4:00:05
所以为了避免这种情况,我试图将时区偏移设置为 0:
<label>{{ 5 * 1000 | date:'h:mm:ss z':'+0000'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'UTC'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'GMT'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'GMT+0'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'UTC+0'}}</label>
Run Code Online (Sandbox Code Playgroud)
但这一次时间移动了 12 小时而不是 0:
12:00:05 格林威治标准时间+0
那么有没有一种方法可以在不移动时区的情况下使用 DatePipe 将秒转换为时间?
或者是否有任何其他角度的管道可用于此目的?
我需要覆盖默认的 Angular 7 日期管道格式(medium
、short
、fullDate
等),因为我不想使用两个日期管道(默认一个和自定义一个),所以我做了以下并想知道是一个这样做的好主意:
// extend-date.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
import { DatePipe } from '@angular/common';
@Pipe({
name: 'date'
})
export class ExtendDatePipe extends DatePipe implements PipeTransform {
constructor() {
super('en-US');
this.customDateFormats = {
medium: '...',
short: '...',
fullDate: '...',
longDate: '...',
mediumDate: '...',
shortDate: '...',
mediumTime: '...',
shortTime: '...'
};
}
transform(value: any, args?: any): any {
switch (args) {
case 'medium':
return super.transform(value, this.customDateFormats.medium);
case 'short':
return super.transform(value, this.customDateFormats.short); …
Run Code Online (Sandbox Code Playgroud) 我试图DatePipe
在Angular 2中使用.我希望输出日期格式为:08/23/2017 at 11:07 AM
.
但是,我无法找出at
以我的日期格式包含文本的正确方法.
当我指定格式时: {{my_date | date:'MM/dd/yyyy at hh:mm a'}}
我明白了:08/23/2017 AMt 11:07 AM
.
我试着在引号中包围文本: {{my_date | date:'MM/dd/yyyy "at" hh:mm a'}}
但这只是在输出中添加了引号:08/23/2017 "AMt" 11:07 AM
.
唯一的方法是将它分成两个独立的管道,格式的两边是{{my_date | date: 'MM/dd/yyyy}} at {{my_date | date: 'hh:mm a'}}
什么样的?
或者有没有办法逃脱a
in,at
以便它将显示文本at
而不是AMt
?
我正在使用角度4应用程序,在这里我需要使用角度DatePipe获取当前日期和时间.
我希望以下列格式获取日期和时间
dd-mm-yyyy hh:MM:ss AM/PM
我通过使用Angular DatePipe获得了预期,如下所示
<p>{{today | date:'dd-MM-yyyy hh:mm:ss a':'+0530'}}</p>
Run Code Online (Sandbox Code Playgroud)
输出:
10-05-2018 03:28:57 PM
Run Code Online (Sandbox Code Playgroud)
在这里,我想要做的是从app.component.ts获取相同的输出而不触及HTML
所以我尝试了下面的代码,但它生成了一个13位数的时间戳
today = Date.now();
fixedTimezone = this.today;
Run Code Online (Sandbox Code Playgroud)
那么如何在不使用HTML的情况下从app.component.ts文件中获取所提及格式的日期和时间.