如何将日期从ASP.NET WebAPI传递和处理到角度组件?

时间:2019-02-08 09:44:31

标签: c# angular asp.net-web-api datetime-format

我正在像这样从asp.net网络api发送日期:

SubmitDate.ToString()

它正在返回:

12/13/2018 8:24:20 AM

在角度组件中,我使用角度管道以“ 2018年12月12日”格式显示日期,它与我当前的PC日期格式配合正常,但是当我更改PC的日期格式时,出现以下错误如下所示

'Unable to convert "18/12/13 1:54:20 PM" into a date' for pipe 'DatePipe'

请帮助理解它,我已经尝试了这些方法

SubmitDate.ToLocalTime().ToString()

SubmitDate.ToUniversalTime().ToString()

,但没有成功。如何将日期从Web API传递和处理到角度组件?

带角管:

solution.SubmitDate | date:'MMMM d, yyyy'

4 个答案:

答案 0 :(得分:2)

您可以使用DateTime.ToString()重载,该重载接受一个参数来格式化日期。

例如,要格式化为当前适合您的日期,您可以使用:

var date = new DateTime(2018, 12, 13, 8, 24, 20);
Console.WriteLine(date.ToString("MM/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture));
//12/13/2018 8:24:20 AM

CultureInfo.InvariantCulture在这里用于不考虑任何特定于区域性的格式/本地化。

有关日期格式的更多文档-https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-date-and-time-format-strings

答案 1 :(得分:1)

Javascript有一个日期对象。如果您以可接受的格式发送日期,则可以自动将其解析为javascript日期对象。

像这样声明您的响应界面以进行自动解析。

export interface something {
  time: Date;
}

从asp.net,您需要确保以JavaScript可以理解的格式发送。从docs接受的格式可能看起来像这样:

December 17, 1995 03:24:00

1995-12-17T03:24:00

问题在于asp.net和javascript对日期格式有不同的标准。

如果要制作客户端解决方案[JavaScript]:

function ToJavaScriptDate(value) {
  var pattern = /Date\(([^)]+)\)/;
  var results = pattern.exec(value);
  var dt = new Date(parseFloat(results[1]));
  return (dt.getMonth() + 1) + "/" + dt.getDate() + "/" + dt.getFullYear();
}

但是最好的方法是服务器端解决方案。这是个返回真实UTC时间[C#]的函数。

return DateTime.UtcNow
               .Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc))
               .TotalMilliseconds;

这样,您就可以确切地了解客户端的含义。时间因客户而异。

答案 2 :(得分:0)

您可以在API端固定日期格式 SubmitDate.ToString("MMM d, yyyy");

答案 3 :(得分:0)

请尝试这个。它对我有用。

var utcDate1 =新的Date(Date.UTC(96,1,2,3,4,5)); //预期输出:1996年2月2日星期五,格林尼治标准时间