angular slickgrid 日期格式更改仅在网格中显示
angular slickgrid date format change only display in grid
this.columnDefinitions = [
{
id: 'edit',
field: 'id',
excludeFromColumnPicker: true,
excludeFromGridMenu: true,
excludeFromHeaderMenu: true,
formatter: Formatters.editIcon,
minWidth: 30,
maxWidth: 30,
onCellClick: (e: Event, args: OnEventArgs) => {
this.router.navigate(['/transaction/transaction-detail/' + args.dataContext.id]);
}
},
{ id: 'cin', field: 'customer.cin', name: 'CIN', filterable: true, sortable: true, formatter: Formatters.complexObject },
{ id: 'branch', field: 'branch.name', name: 'Branch', filterable: true, sortable: true, formatter: Formatters.complexObject },
{ id: 'valueDate', field: 'valueDate', name: 'Transaction Date ', dateFormat: 'DD-MM-YYYY'},
{ id: 'amount', field: 'amount', name: 'Amount', sortable: true, maxWidth: 200, type: FieldType.number, filter: { model: Filters.inputNumber } },
];
<div class="card-body">
<div class="form-group row" id="grid-container">
<angular-slickgrid gridId="transactionGrid" [columnDefinitions]="columnDefinitions"
[gridOptions]="gridOptions" [dataset]="dataset"
(onAngularGridCreated)="angularGridReady($event)">
</angular-slickgrid>
</div>
</div>
我需要将日期格式更改为 DD-MM-YYYY 或 DD/MM/YYYY(删除时间)
如何在 angular slickgrid
中做到这一点
现在显示如下...日期以日期格式出现..我们可以使用管道将日期转换为字符串吗
在 angular 中操作数据的最好和最简单的方法是通过管道。
@Pipe({
name: 'dateAgo',
pure: true
})
export class DateAgoPipe implements PipeTransform {
transform(value: any, args?: any): any {
if (value) {
const seconds = Math.floor((+new Date() - +new Date(value)) / 1000);
if (seconds < 29) // less than 30 seconds ago will show as 'Just now'
return 'Just now';
const intervals = {
'year': 31536000,
'month': 2592000,
'week': 604800,
'day': 86400,
'hour': 3600,
'minute': 60,
'second': 1
};
let counter;
for (const i in intervals) {
counter = Math.floor(seconds / intervals[i]);
if (counter > 0)
if (counter === 1) {
return counter + ' ' + i + ''; // singular (1 day ago)
} else {
return counter + ' ' + i + 's'; // plural (2 days ago)
}
}
}
return value;
}
}
并在html中使用它:
{{conversation.createdAt | dateAgo}}
您也可以对 js 和 angular
使用正则表达式
formatDate(date: string): string {
return (new Date(date)).toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/, '--');
}
您可能对 Angular-Slickgrid 和 SlickGrid 一般不熟悉,我只是这么说是因为没有 dateFormat
属性(我很惊讶 TypeScript 没有警告你),但是 formatter
确实存在,所以答案很简单,你只需要使用适当的格式化程序。有一些内置的格式化程序,如果找不到您想要的确切格式,您也可以选择创建自己的自定义格式化程序。
我强烈建议您浏览所有 Wiki,例如 Formatters - Wiki 会通过查看所有内置格式化程序的列表来给您答案,并且还有一个部分向您展示如何在需要时创建自定义格式化程序。
在你的情况下,我认为你可以通过做两件事来实现你想要的格式,首先调用 Formatters.dateEuro
这会给你这种格式 DD/MM/YYYY
如果你想替换 /
通过 -
然后你可以通过使用 formatterOptions
网格选项
来实现
this.columnDefinitions: Column[] = [
// ...
{ id: 'valueDate', field: 'valueDate', name: 'Transaction Date ', formatter: Formatters.dateEuro },
];
this.gridOptions: GridOption = {
// you can customize the date separator through "formatterOptions"
formatterOptions: {
// What separator to use to display a Date, for example using "." it could be "2002.01.01"
dateSeparator: '-', // can be any of '/' | '-' | '.' | ' ' | ''
}
};
我想再次强调所有 Wikis,我花了很多时间写它们来回答大多数问题,包括你的问题。另请注意,Angular-Slickgrid 是 jQuery 库之上的包装器,因此 Angular 管道无法解决您的问题。
this.columnDefinitions = [
{
id: 'edit',
field: 'id',
excludeFromColumnPicker: true,
excludeFromGridMenu: true,
excludeFromHeaderMenu: true,
formatter: Formatters.editIcon,
minWidth: 30,
maxWidth: 30,
onCellClick: (e: Event, args: OnEventArgs) => {
this.router.navigate(['/transaction/transaction-detail/' + args.dataContext.id]);
}
},
{ id: 'cin', field: 'customer.cin', name: 'CIN', filterable: true, sortable: true, formatter: Formatters.complexObject },
{ id: 'branch', field: 'branch.name', name: 'Branch', filterable: true, sortable: true, formatter: Formatters.complexObject },
{ id: 'valueDate', field: 'valueDate', name: 'Transaction Date ', dateFormat: 'DD-MM-YYYY'},
{ id: 'amount', field: 'amount', name: 'Amount', sortable: true, maxWidth: 200, type: FieldType.number, filter: { model: Filters.inputNumber } },
];
<div class="card-body">
<div class="form-group row" id="grid-container">
<angular-slickgrid gridId="transactionGrid" [columnDefinitions]="columnDefinitions"
[gridOptions]="gridOptions" [dataset]="dataset"
(onAngularGridCreated)="angularGridReady($event)">
</angular-slickgrid>
</div>
</div>
我需要将日期格式更改为 DD-MM-YYYY 或 DD/MM/YYYY(删除时间)
如何在 angular slickgrid
中做到这一点现在显示如下...日期以日期格式出现..我们可以使用管道将日期转换为字符串吗
在 angular 中操作数据的最好和最简单的方法是通过管道。
@Pipe({
name: 'dateAgo',
pure: true
})
export class DateAgoPipe implements PipeTransform {
transform(value: any, args?: any): any {
if (value) {
const seconds = Math.floor((+new Date() - +new Date(value)) / 1000);
if (seconds < 29) // less than 30 seconds ago will show as 'Just now'
return 'Just now';
const intervals = {
'year': 31536000,
'month': 2592000,
'week': 604800,
'day': 86400,
'hour': 3600,
'minute': 60,
'second': 1
};
let counter;
for (const i in intervals) {
counter = Math.floor(seconds / intervals[i]);
if (counter > 0)
if (counter === 1) {
return counter + ' ' + i + ''; // singular (1 day ago)
} else {
return counter + ' ' + i + 's'; // plural (2 days ago)
}
}
}
return value;
}
}
并在html中使用它:
{{conversation.createdAt | dateAgo}}
您也可以对 js 和 angular
使用正则表达式 formatDate(date: string): string {
return (new Date(date)).toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/, '--');
}
您可能对 Angular-Slickgrid 和 SlickGrid 一般不熟悉,我只是这么说是因为没有 dateFormat
属性(我很惊讶 TypeScript 没有警告你),但是 formatter
确实存在,所以答案很简单,你只需要使用适当的格式化程序。有一些内置的格式化程序,如果找不到您想要的确切格式,您也可以选择创建自己的自定义格式化程序。
我强烈建议您浏览所有 Wiki,例如 Formatters - Wiki 会通过查看所有内置格式化程序的列表来给您答案,并且还有一个部分向您展示如何在需要时创建自定义格式化程序。
在你的情况下,我认为你可以通过做两件事来实现你想要的格式,首先调用 Formatters.dateEuro
这会给你这种格式 DD/MM/YYYY
如果你想替换 /
通过 -
然后你可以通过使用 formatterOptions
网格选项
this.columnDefinitions: Column[] = [
// ...
{ id: 'valueDate', field: 'valueDate', name: 'Transaction Date ', formatter: Formatters.dateEuro },
];
this.gridOptions: GridOption = {
// you can customize the date separator through "formatterOptions"
formatterOptions: {
// What separator to use to display a Date, for example using "." it could be "2002.01.01"
dateSeparator: '-', // can be any of '/' | '-' | '.' | ' ' | ''
}
};
我想再次强调所有 Wikis,我花了很多时间写它们来回答大多数问题,包括你的问题。另请注意,Angular-Slickgrid 是 jQuery 库之上的包装器,因此 Angular 管道无法解决您的问题。