如何正确处理 SAPUI5 中的 Edm:DateTime 表单 OData 接口? [复制]

2024-03-01

是否有定义应在 SAP Netweaver Gateway 服务的 OData Edm:DateTime 中发送哪些值? 特别是它应该始终被解释为 UTC 吗?

我假设 SAPUI5 库足够智能,如果接口定义正确,可以自动处理所有这些时区问题 - 问题是,什么是正确的?

我更喜欢在客户端使用这样的代码:

new sap.m.DatePicker({
     value : {
         path : "BirthDate",
         type : new sap.ui.model.type.Date
     }
}),

你如何解决这些问题?

Edit

时区处理对我来说似乎仍然很奇怪。 SAP 网关服务器发送以下 Edm:DateTime:2015-04-16T00:00:00 缺少任何时区信息。

如果我像这样绑定日期选择器:

var oContent = new sap.m.DatePicker({
    value : {
        path : "Date",
        type : new sap.ui.model.type.Date({
                    style: "short",
                })
    }
})

我得到以下输出:16.04.15(似乎是正确的)。 绑定没有类型信息的日期选择器显示: Thu Apr 16 2015 02:00:00 GMT+0200 (Mitteleuropäische Sommerzeit)

如果我使用日期选择器将日期更改为 2015 年 4 月 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(欧洲中部夏季时间)

If I use

new sap.m.DatePicker({
value : {
    path : "Date",
    type : new sap.ui.model.type.Date({
                style: "short",
                UTC: true
        })
}
})

数据似乎是正确的(选择新日期后 2 小时并没有丢失)。

我问我,有没有定义什么类型的数据网关将发送? 如果 Edm.DateTime 信息中缺少时区,客户端应如何正确工作?特别是当客户位于不同时区时?

奇怪的是,我使用过滤器也遇到了类似的问题。但 UTC 标志似乎不起作用。

任何人在该主题上有一些经验吗?或者有什么关于好的文档的提示吗? *https://sapui5.netweaver.ondemand.com/sdk/#docs/guide/91f3070d6f4d1014b6dd926db0e91070.html https://sapui5.netweaver.ondemand.com/sdk/#docs/guide/91f3070d6f4d1014b6dd926db0e91070.html或多或少地说“保重”,但没有说如何:-/

更多信息

我在 SAP 网络上检测到同样的问题(http://scn.sap.com/thread/3574419 http://scn.sap.com/thread/3574419)。不确定给出的答案是否正确。看起来像是在修改不需要的元数据?

我仍在寻找这个问题的解决方案

我检测到在绑定和过滤器使用的情况下对数据的不同处理。


关于SAP我无法回答,因为我不熟悉。但我可以根据 OData 提供一些见解。

The Edm:DateTime类型是基于W3C XML 架构xs:dateTime http://www.w3.org/TR/xmlschema-2/#dateTime,这又基于ISO8601 https://en.wikipedia.org/wiki/ISO_8601。 XML 模式和 ISO8601 都规定没有时区的时间将被视为“本地时间”。那是,对某人来说是本地的。谁的“本地”是故意未定义的。

来自 W3C XML 架构§3.2.7:

“本地”或未时区时间被假定为相应法律机构规定的某个未指定地点的时区的时间

来自 ISO 8601 第三版 §4.3.2:

如果使用当地时间,则区域指示符为空...

考虑你的例子2015-04-16T00:00:00。唯一知道什么的方法exact这指的是应用一些附加上下文的时刻。对于生日,这可能是该人当前所在的时区(他们庆祝生日的地方,而不是他们出生的地方)。或者,如果该人的位置未知(可能是使用该系统的人的时区),则它可能是某个任意位置。

因此,解释该值的值是应用时区的位置。在您的情况下,反序列化期间似乎会应用一些本地时区。

另请考虑,生日最好只用日历日期来表示,而不是日期的午夜。这Edm:Date类型更适合于此。对于其他类型,特别是如果您知道该值是 UTC 或位于特定时区,则Edm:DateTimeOffset更合适。

还认识到Edm:DateTimetype 已从版本 4.0 中的 OData 规范中删除。许多人(包括我自己)认为这是一个错误。我不确定这是否会影响您,但您应该注意。

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确处理 SAPUI5 中的 Edm:DateTime 表单 OData 接口? [复制] 的相关文章

  • Angular 5 ng-pick-datetime 日期格式

    我在 NgModule 中提到了 ng pick datetime 5 1 5 提供 OWL DATE TIME LOCALE useValue en SG 对于日期格式 当我们直接从触发器打开日历时就可以了 但如果直接与输入框交互然后打开
  • 使用 pandas to_datetime 时如何定义格式?

    我想根据以下内容绘制结果与时间的关系图testresult csv文件具有以下格式 并且我无法正确定义 TIME 列的数据类型 TIME RESULT 03 24 2016 12 27 11 AM 2 03 24 2016 12 28 41
  • 添加有关白天/黄昏/夜晚/黎明的信息以在 R 中跟踪数据

    我有一个数据集 其中包含几个月的日期时间 纬度和经度变量的跟踪数据 如下所示 gt start lt as POSIXct 2018 08 01 00 00 00 format Y m d H M S tz UTC gt datetime
  • 使用每日频率格式化 x 轴

    我正在尝试获取每日数据图 我有 3 个月的数据 每天都很难指出 如何格式化 x 轴 以便我可以获得每个日期 可以使用以下命令更改主要刻度的频率set major locator mdates DayLocator interval 5 如下
  • Rails 和 Mysql 的毫秒数

    使用 Rails Mysql 时存储时间 以毫秒为单位 的最佳方式是什么 我将使用小数和composed of 以便能够将该值作为Ruby 时间进行操作 有人有更好的主意吗 自从提出这个问题以来 已经过去了好几年了 这是更新的解决方案 ht
  • PHP strtotime返回Mysql UNIX_TIMESTAMP的不同值

    我在 stackoverflow 上搜索过帖子 发现了一些类似的帖子 但我认为这是一篇不同的帖子 我的 PHP 和 Mysql 服务器的时区全部设置为 UTC 在表中我使用时间戳字段 值为 2010 11 08 02 54 15 我使用这样
  • LINQ 到实体日期时间比较

    我在将 LINQ 中的日期与实体表达式进行比较时遇到问题 我想检查一下是否DateTime DateTime whole day 我想这样做 return context Events Any x gt x UserId id x Date
  • 如何在 Javascript 中获取时区名称(PDT、EST 等)? [复制]

    这个问题在这里已经有答案了 使用 Javascript 有没有办法根据用户的设备获取用户的时区名称 PDT EST 等 我尝试过的代码 const timezone jstz determine const userTimezone tim
  • Python,Bokeh:如何更改日期时间轴的范围

    我想使用按钮设置日期时间轴的范围 然而 该命令 f x range Range1d start start date end end date 不起作用 单击按钮时没有任何反应 无论是在运行 Bokeh 服务器的终端窗口中 还是在 Chro
  • DynamoDB 中的时间戳应使用什么数据类型?

    我是 DynamoDB 新手 我希望创建一个使用 DeviceID 作为哈希键 时间戳作为范围键和一些数据的表 DeviceID 123 Timestamp 2016 11 11T17 21 07 5272333Z X 12 Y 35 在
  • Python 中 datetime.timedelta 的人类可读日期时间间隔?

    我发现自己经常需要在 python 配置文件中指定时间跨度 有没有一种方法可以让我在带有 stdlib 的 python 配置文件中指定更易读的时间范围 类似于 PostgreSQL 的 Interval 语法 或者这需要第三方库吗 澄清我
  • DateTime::修改和夏令时切换

    Using 日期时间 修改 http php net manual en datetime modify php在 DST 边界上添加一个小时会导致它跳过一个小时 e g d new DateTime 2015 11 01 12 00 00
  • Django 查询:“datetime + delta”作为表达式

    好吧 我的问题如下 假设我有下一个模型 这是一个简单的情况 class Period models Model name CharField field specs here start date DateTimeField field s
  • Pandas如何按时间段过滤DataFrame

    我有一个包含下表的文件 Name AvailableDate totalRemaining 0 X3321 2018 03 14 13 00 00 200 1 X3321 2018 03 14 14 00 00 200 2 X3321 20
  • SAPUI5 等待延迟对象 // 等待 .done() 函数

    我知道有几个线程对此进行讨论 但我认为在 SAPUI5 上下文中没有线程回答有关 SAPUI5 中的延迟 同步调用的一般主题 在我的控制器中我得到 test function var dfd Deferred var sServiceUrl
  • 使用 javascript/jquery 从数据库格式化日期的正确方法

    我正在调用包含日期时间数据类型的数据库 日期看起来像这样 2005 05 23 16 06 00 000 当用户从列表中选择某个项目时 我想在表格中显示它 我调用我的控制器操作并返回所有时间的 Json 并将它们放入表中 问题是日期完全错误
  • 从 Ruby 中的 DateTime 变量获取时间

    我在 ruby 中工作 我有一个包含数据库中今天的日期时间的对象 我只想要时间截断数据 我怎样才能得到那个 Try 日期时间 strftime http www ruby doc org stdlib 1 9 3 libdoc date r
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • 如何使用 SimpleDateFormat 解析多种格式的日期

    我正在尝试解析文档中的一些日期 用户似乎以类似但不完全相同的格式输入了这些日期 以下是格式 9 09 9 2009 09 2009 9 1 2009 9 1 2009 尝试解析所有这些内容的最佳方法是什么 这些似乎是最常见的 但我想让我困扰
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim

随机推荐