2

我正在开发一个需要在多个语言环境/时区工作的应用程序。我遇到了应该是一个简单的问题,但由于 ABP 的工作方式,事实证明它不是那么容易修复。

问题:ABP 正在从已预先本地化的数据库中检索日期时间。我想将 DateTimes 作为 ISO YYYY-MM-DD HH:MM:SS 检索,以便当 moment.js 在客户端接收数据时,我有一个共同的起点,即 ISO。从那里我可以轻松地格式化为正确的语言环境。

我不想使用 switch 语句手动指定每个语言环境的格式,而是从 ISO 创建时刻,如下所示:

var date = moment('2020-05-22 10:05').utc(); //works for an ISO date

var date = moment('22/05/2020 10:05').utc(); //Invalid date

var date = moment('22/05/2020 10:05', 'DD/MM/YYYY HH:mm').utc(); //Works but I don't want to have to manually specify this for each locale.

但目前我不能这样做,因为返回的 DateTime 总是本地化的。ABP 和 DotNetZero 论坛声明 DateTime 应返回为 UTC,但似乎并非如此。

global.asax 中的 Application_start() 还包含以下定义:

Clock.Provider = ClockProviders.Utc;

我的控制器代码(示例命名)

var query = _someRepository.GetAll();

var rows = query.Select(a => new RowViewModel
{
    Id = a.Id,
    Name = a.Name,
    CreatedBy = a.CreatorUser.Name + " " + a.CreatorUser.Surname,
    CreatedOn = a.CreationTime //Returns 22/05/2020 10:05:05, I want 2020-05-22 10:05:05
});

如何让 ABP 从我的 Controller/EF 查询中返回为 ISO 日期? 欢迎任何信息。

在回答下面的评论时,这是返回日期的 DateTimeKind 数据的样子:

在此处输入图像描述

4

0 回答 0