Javascript MomentJs:如何在Typescript中将字符串转换为日期?

Javascript MomentJs:如何在Typescript中将字符串转换为日期?,javascript,angular,typescript,momentjs,ag-grid,Javascript,Angular,Typescript,Momentjs,Ag Grid,我在Angular 2中实现了Ag网格。我有一个日期列和日期排序,Ag grid只需要格式中的日期类型。因此,我必须以日期的形式发送它,以便进行渲染。但我的输入是字符串。 我的日期字符串格式为2017-01-19。我在做什么 let myDate:Date = moment(dateString).toDate(); 但这是印度标准时间2017年1月19日星期四00:00的givimg me输出。我也试过这样 let myDate:Date = moment(dateString).forma

我在Angular 2中实现了Ag网格。我有一个日期列和日期排序,Ag grid只需要格式中的日期类型。因此,我必须以日期的形式发送它,以便进行渲染。但我的输入是字符串。 我的日期字符串格式为2017-01-19。我在做什么

let myDate:Date = moment(dateString).toDate();
但这是印度标准时间2017年1月19日星期四00:00的givimg me输出。我也试过这样

let myDate:Date = moment(dateString).format("DD/MM/YYYY");
let myDate:Date = moment(dateString,"DD/MM/YYYY");
这给了我一个错误-字符串不能分配到日期

我也试过这样

let myDate:Date = moment(dateString).format("DD/MM/YYYY");
let myDate:Date = moment(dateString,"DD/MM/YYYY");
但是没有运气。 我想要的是,输出类型,如日期和表19-01-2017

请建议尝试以下方法:

让myDate:Date=moment(日期字符串,“YYYY-MM-DD”)。格式(“DD-MM-YYYY”)


基本上,在调用
moment()
时,应该指定当前日期所采用的格式,而不是所需的输出格式。调用
.format()
时应指定输出格式。您应该在列定义中使用a。其中,
date
字段应为javascript日期。您可以通过
新日期(“2017.02.28”)
从字符串中生成此项,此处无需使用矩

{
  colId: "date",
  headerName: "Date",
  field: "date",
  cellRendererFramework: GridDateComponent,
}
此组件使用
日期
管道显示所需的日期格式,同时保留原始JSDate进行排序等

import { Component } from '@angular/core';
import { AgRendererComponent } from 'ag-grid-ng2/main';

@Component({
    selector: 'date-cell',
    template: `{{params.value | date:'d MMM'}}`
})
export class GridDateComponent implements AgRendererComponent {
    public params: any;

    agInit(params: any): void {
        this.params = params;
    }
}
给出一个日期对象


中得到答案JS日期没有格式,您可以使用矩来获取表示日期的字符串,就像您在第一个代码示例中所做的那样。
让myDate:Date=moment(dateString).toDate()-以及为什么这是不可接受的。你想达到什么目标
format()
会将其转换回字符串,如果您只想显示它,则可以;如果您想将ti发送到REST,则第一个示例也可以。您混淆了日期对象及其格式。如果需要日期对象,则第一组代码是正确的;您需要使用Angular 2或Ag网格中的某些内容来正确格式化日期。否则,请将
myDate
的类型更改为
string
,并使用第二组代码。@Mikemcaughan,默认情况下,所有角度2管道都以字符串格式返回输出。第一组代码可以正常工作,但格式不是所需的格式。您确实需要清楚地了解您希望从这段代码中得到什么。您共享的代码行只是将日期变量设置为Moment.js调用的输出。日期没有固有的字符串值(您在第一个代码的输出中看到的是浏览器用于其
toString()的内容)
Date
对象的实现。其他浏览器会有所不同。这不起作用,因为
myDate
设置为日期类型。这与OP的第二段代码基本相同。这段代码不完全相同,因为在他的示例中,他在尝试将日期转换为日期时没有指定日期的格式一个矩对象。这就是为什么我没有说“完全相同”;我说“基本上”相同,但它仍然会失败并出现相同的错误。这里有一个问题。如果我导出到excel,它将包含{{params.value | date:'d MMM'},不是原始日期。我从Ag grid Doc获得此信息。您的问题中没有提到任何有关导出到Excel的内容。如果这是您想要工作的内容(这是一项企业功能),您将不得不求助于另一个选项。我很糟糕,是的,我正在使用企业试用版。请务必让我知道是否有解决方法。非常感谢