【发布时间】:2021-01-03 18:08:15
【问题描述】:
我有一个用例,我不确定如何以一种好的方式解决。 我目前正在开发一个 .Net 核心 WebApi,它正在从全球各个当前系统接收数据。然后我对其进行处理,最后通过 oData 端点将其提交给 SAP。
我遇到的问题是我在正文有效负载中收到的参数是DateTime。以前我没有任何问题。但不久前,我开始从其他系统获取数据,该系统以稍微不同的方式提供数据。
以前这是我得到的格式:2020-09-16T16:30:00 没问题。但是新系统看起来是这样的:2020-09-16T16:00:00 -05:00也可以以+08:00结尾。
我面临的问题是 SAP 需要在 本地时间 获得。但在我的代码中,当我在控制器中看到传入的有效负载时,它会将2020-09-16T16:00:00 -05:00 转换为2020-09-16T23:00:00。
-
我已经搜索了很多以找到解决方案。但 99% 只建议使用 UTC 时间,这对我来说不是一个选项。
-
另一种选择是使用
DateTimeOffset,我已经尝试过但无法将时间转换为使用localTime。
我的问题是。 timezone 在到达控制器之前是否无法自定义转换以去除它?
【问题讨论】:
-
你想要一些奇怪的东西......这通常意味着使用字符串操作进行自定义绑定或切换到数据类型的字符串并在控制器中进行字符串操作。我强烈建议停下来想想你在做什么 - 01:23 -01:00, 01:23 -02:00, 01:23 -03:00 是 3 个不同的时间间隔一小时...剥离他们的时区和说所有发生在 1:23 听起来不正确(这可能是你的目标,只是一个奇怪的目标)
-
@AlexeiLevenkov Yearh 我知道这是一个奇怪的目标。我的问题是,我受制于我收到的东西和需要交付的东西。如果您对解决方案有其他建议,我欢迎。
-
不,我没有看到任何其他解决方案,除了我已经建议过...您可能会使用stackoverflow.com/questions/6676856/… 获得更好的代码来剥离时区...但是您必须切换到字符串或实施自定义模型绑定/自定义 JSON 解析取决于此参数的位置。