Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用ionic2/angular2在iOS/Safari中正确显示日期时间_Ios_Angular_Ionic Framework_Safari_Ionic2 - Fatal编程技术网

无法使用ionic2/angular2在iOS/Safari中正确显示日期时间

无法使用ionic2/angular2在iOS/Safari中正确显示日期时间,ios,angular,ionic-framework,safari,ionic2,Ios,Angular,Ionic Framework,Safari,Ionic2,嗨,我在这里遇到了一个奇怪的问题,我得到了动态数据,我也得到了日期和时间,我用chrome/android中的日期管道在html中显示,它工作正常,但当我检查ios/Safari时,它显示了时间差 下面是我正在使用的json数据 FromCurrentDate: "2018-01-05T00:00:00" FromPreviousDate: "2018-01-04T00:00:00" ToCurrentDate: "2018-01-05T14:00:53.137" ToPreviousD

嗨,我在这里遇到了一个奇怪的问题,我得到了动态数据,我也得到了日期和时间,我用chrome/android中的日期管道在html中显示,它工作正常,但当我检查ios/Safari时,它显示了时间差

下面是我正在使用的json数据

FromCurrentDate: "2018-01-05T00:00:00"

FromPreviousDate: "2018-01-04T00:00:00"


ToCurrentDate: "2018-01-05T14:00:53.137"

ToPreviousDate: "2018-01-04T14:00:53.137"
我会像这样显示日期,然后 在chrome/android中,它显示如下

在Ios/safari中显示如下 在模板中,我使用下面的代码

Currrent {{singleTable[0].FromCurrentDate|date: 'dd/MM/yyyy,h:mm:ss a'}} to {{singleTable[0].ToCurrentDate|date: 'dd/MM/yyyy,h:mm:ss a'}}

如何解决这个时差问题?

在ios/mac中,日期过滤器不起作用,所以请使用矩量.js

我尝试了很多东西,但我能在moment.js中做得最好

比如:我创建了一个管道

<span>{{ActionDate | dateTimeFormatFilter : "MMM DD, YYYY"}}</span>

@Pipe({name: "dateTimeFormatFilter"})
@Injectable()
export class DateTimeFormatPipe implements PipeTransform {
transform(date: any, format: string): any {
        if (date) {
         return moment(date).format(format);
        }
    }
}
{{ActionDate | dateTimeFormatFilter:“mmmdd,YYYY”}
@管道({name:“dateTimeFormatFilter”})
@可注射()
导出类DateTimeFormatPipe实现PipeTransform{
转换(日期:任意,格式:字符串):任意{
若有(日期){
返回时刻(日期)。格式(格式);
}
}
}

您面临的问题是由
Intl
api引起的,因为Angular 2发行版的
DatePipe
仅适用于具有自定义格式字符串的FireFox和Chrome。 由于缺少Intl,它在Safari上不起作用。因此,作为一个临时解决方案,需要包含Intl polyfill

<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.en"></script>

解决方案2 您可以使用moment.js,它可以按如下方式设置所需日期的格式

moment(singleTable[0]。FromCurrentDate)。格式(“dd/MM/yyyy,h:MM:ss a”)

更新1

在最新的angular中,他们删除了Intl api,为此您需要更新到angular 5

更新2
这是一个使用angular风格的MomentJs,我添加了你的日期格式,但没有在safari中测试,在chrome中测试,

我在桌面上的safari和iPhone上的safari/chrome上遇到了相同的问题。 当日期对象用作值时,它可以在safari或大多数浏览器上工作。()

我解决了同样的问题,添加了一个自定义管道,将日期时间字符串转换为日期对象,然后日期管道按预期工作

组件

someDate1 = "2019-09-01 12:02:14";
someDate2 = "2019-09-01";
someDate3 = "2019-09-01 00:00:00";
模板

{{ someDate1 | toDateObj | date:'MM-dd-yyyy h:mm a' }}
这是我添加的
toDateObj
自定义管道

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

@Pipe({
  name: 'toDateObj'
})

export class ToDateObjPipe implements PipeTransform {

    transform(value: any): any {
        if (value) {
            if (value.toString().indexOf(' ') === -1) {
                value = value + ' 00:00:00';
            }
            const temp = value.toString().replace(' ', 'T');
            return new Date(temp);
        } else {
            return null;
        }
    }

}

对我来说,这适用于Safari和Chrome:

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


@Pipe({
  name: 'customDate'
})

export class DatePipe implements PipeTransform {
  transform(value: string): string {

      let dd = value.substr(8, 2);
      let MM = value.substr(5, 2);
      let yyyy = value.substr(0, 4);
      let date = `${dd}.${MM}.${yyyy}`;

      return `${date}`;
  }
}
当chrome还可以的时候,我在Safari上渲染视图时遇到了一个错误。调试之后,我发现管道日期有问题。所以我做了一个定制的。所有答案都很好,但导入瞬间库似乎是一个大文件。 只需导出这个类,创建一个模块并在那里声明它(也导出它),并使用以下示例:{{{{u question.created_at|toDateObj:'dd.MM.yyyy'}


希望它能帮助别人

你在用Angular 5吗?还是以前的版本?@shadowlauch Angular 4I不确定这是否会导致问题,遗憾的是,我无法检查,因为我现在无法访问Mac,但Angular 4使用intl API,这导致Safari出现一些问题。Angular 5从intl API中切换出来,增加了一致性。有什么区别?AM和PM?@Duanx和它显示AM和它占用达尔文时区如果我选择解决方案2,那么在html方面,我可以利用这一时刻。js@Madpop是的,您可以,您也可以获得这些实现的教程。但是,我如何在{{}中提供solution2矩(singleTable[0]。FromCurrentDate).format(“dd/MM/yyyy,h:MM:ss a”)@Madpop当您使用angular 2时,最好尝试使用支持模块化格式的力矩,例如: