- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有定义应在 SAP Netweaver Gateway 服务的 OData Edm:DateTime 中发送哪些值?特别是应该始终将其解释为 UTC?
我假设 SAPUI5 库足够智能,如果接口(interface)定义正确,可以自动处理所有这些时区问题 - 问题是,什么是正确的?
我更喜欢在客户端使用这样的代码:
new sap.m.DatePicker({
value : {
path : "BirthDate",
type : new sap.ui.model.type.Date
}
}),
如何解决这些问题?
时区处理对我来说似乎仍然很奇怪。SAP 网关服务器发送以下 Edm:DateTime:2015-04-16T00:00:00缺少任何时区信息。
如果我像这样绑定(bind)日期选择器:
var oContent = new sap.m.DatePicker({
value : {
path : "Date",
type : new sap.ui.model.type.Date({
style: "short",
})
}
})
我得到以下输出:16.04.15(似乎是正确的)。绑定(bind)不带类型信息的日期选择器显示:Thu Apr 16 2015 02:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)
如果我使用日期选择器将日期更改为 15.04.17,第二行是:2015 年 4 月 17 日星期五 00:00:00 GMT+0200(欧洲中部夏季时间)请注意时间差异(缺少 2 小时)。
如果我将其发送到服务器,我会得到 Edm.DateTime == 2015-04-16T00:00:00控制显示:2015 年 4 月 16 日星期四 02:00:00 GMT+0200(欧洲中部夏季时间)
如果我使用
new sap.m.DatePicker({
value : {
path : "Date",
type : new sap.ui.model.type.Date({
style: "short",
UTC: true
})
}
})
数据似乎是正确的(选择新日期后 2 小时并没有丢失)。
我问我,有没有定义什么类型的数据网关将发送?如果 Edm.DateTime 信息中缺少时区,客户端应如何正确工作?尤其是当客户位于不同时区时?
奇怪的是,我使用过滤器也遇到了类似的问题。但 UTcflags似乎不起作用。
有人对此主题有一些经验吗?或者有什么关于好的文档的提示吗?* https://sapui5.netweaver.ondemand.com/sdk/#docs/guide/91f3070d6f4d1014b6dd926db0e91070.html或多或少说“保重”,但没有说如何:-/
我在 SAP 网络 ( http://scn.sap.com/thread/3574419 ) 上检测到同样的问题。不确定给出的答案是否正确。看起来像是在修改不需要的元数据?
我仍在寻找解决此问题的方法
我检测到在绑定(bind)和过滤器使用情况下对数据的不同处理。
最佳答案
关于SAP我无法回答,因为我不熟悉。但我可以根据 OData 提供一些见解。
Edm:DateTime
类型基于 W3C XML Schema xs:dateTime
,这又基于 ISO8601 。 XML 模式和 ISO8601 都规定没有时区的时间将被视为“本地时间”。也就是说,对于某人来说是本地的。故意未定义其“本地”。
来自 W3C XML 架构§3.2.7:
"Local" or untimezoned times are presumed to be the time in the timezone of some unspecified locality as prescribed by the appropriate legal authority
摘自 ISO 8601 第三版 §4.3.2:
The zone designator is empty if use is made of local time ...
考虑您的示例 2015-04-16T00:00:00
。要知道这指的是哪个确切时刻,唯一的方法是应用一些额外的上下文。对于生日,这可能是该人当前所在的时区(他们庆祝生日的地方,而不是他们出生的地方)。或者,如果该人的位置未知,则它可能是某个任意位置 - 也许是使用该系统的人的时区。
因此,该值的解释就是应用时区的地方。在您的情况下,反序列化期间似乎会应用一些本地时区。
另请注意,生日最好仅用日历日期表示,而不是日期的午夜。 Edm:Date
类型更适合于此。对于其他类型,特别是如果您知道该值是 UTC 或位于特定时区,则 Edm:DateTimeOffset
更合适。
另请注意,Edm:DateTime
类型已从版本 4.0 中的 OData 规范中删除。许多人(包括我自己)认为这是一个错误。我不确定这是否会影响您,但您应该注意。
希望有帮助。
关于datetime - 如何处理EDM :DateTime form OData interface in SAPUI5 correct?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940222/
我正在尝试使用以下方法对 datetime.datetime 对象列表求和: from datetime import datetime, timedelta d= [datetime.datetim
我正在尝试这个 (datetime.datetime.today()-datetime.datetime.today()).days 给出 -1 并期待值 0 而不是我得到 -1。在这种情况下,我将结
如果我列一个时间增量的列表,平均值比我对这些增量的微秒值求平均时要大。为什么会这样呢?。赠送。这是Linux上的Python3.8.10。
考虑以下片段: import datetime print(datetime.datetime.now() - datetime.datetime.now()) 在 x86_64 Linux 下的 P
如何在 SQLAlchemy 查询中比较 DateTime 字段和 datetime.datetime 对象? 例如,如果我这样做 candidates = session.query(User).f
我收到以下错误: type object 'datetime.datetime' has no attribute 'datetime' 在下面一行: date = datetime.datetime
尝试找出如何将当前日期锁定为变量,以从输入的 self.birthday 中减去。我已经查看了各种示例和链接,但无济于事......建议? from datetime import datetime
您好,我有一些 datetime.datetime 格式的日期,我用它们来过滤带有 Pandas 时间戳的 Pandas 数据框。我刚刚尝试了以下方法并获得了 2 小时的偏移量: from datet
如果您调用 datetime.datetime.now(datetime.timezone.utc) 您会得到类似 datetime.datetime(2021, 9, 8, 1, 33, 19, 6
我正在使用 pywin32 读取/写入 Excel 文件。我在 Excel 中有一些日期,以 yyyy-mm-dd hh:mm:ss 格式存储。我想将它们作为 datetime.datetime 对象
据我所知,自 Unix 纪元(1970-01-01 00:00:00 UTC)以来的秒数在全局各地应该是相同的,因为它固定为 UTC。 现在,如果您所在的时区有几个小时 +/- UTC,为什么这样做会
我正在尝试添加 datetime.datetime 和 datetime.time 以获得一列。我正在尝试结合: import datetime as dt dt.datetime.combine(m
我有一个脚本需要在脚本的不同行执行以下操作: today_date = datetime.date.today() date_time = datetime.strp(date_time_string
我在 AppEngine 上收到 type object 'datetime.datetime' has no attribute 'datetime' 错误,提示日期时间类型,但我的导入是 impo
所以我一直在使用 python 语言制作东西。我遇到了一些不太容易理解的错误: TypeError: 'datetime.datetime' object is not subscriptable (
当我运行时 from datetime import date, time, timedelta date(2012, 11, 1) + timedelta(0, 3600) 结果是 datetime
我的目标是转换 utc进入loc : use chrono::{Local, UTC, TimeZone}; let utc = chrono::UTC::now(); let loc = chron
假设您有一个 datetime.date 对象,例如 datetime.date.today() 返回的对象。 稍后您还会得到一个表示时间的字符串,它补充了日期对象。 在 datetime.datet
我试过了 In [16]: import datetime In [17]: now = datetime.datetime.utcnow() In [18]: isinstance(now, dat
我有以下代码并且收到上述错误。由于我是 python 新手,因此无法理解此处的语法以及如何修复错误: if not start or date < start: start = date 最佳答案 有
我是一名优秀的程序员,十分优秀!