对于一个客户端,仅当将浏览器切换为英语时,以下代码:
convertTimeToDate: function(dateobj) {
if ((dateobj == undefined) || (dateobj == null)) {
return "";
}
var dateFormat = sap.ui.core.format.DateFormat.getDateInstance({
pattern: "dd. MMM YYYY"
});
var dateFormatted = dateFormat.format(dateobj);
return dateFormatted;
},
输入日期日期字符串'31的最高日期'9999-12-31'时返回。 Dec 10000'可能是什么问题?它只能在这个人的机器上重现,但对她来说总是如此。
答案 0 :(得分:2)
为了避免时区问题,尤其是在HR中的UI5应用程序中,我决定在最近的开发中以字符串形式发送/接收ISO格式的日期和时间,以确保浏览器中的用户将看到与SAP后端系统。
为确保将这些值同时用于输入和输出,建议实施Custom Data Type。
假设您有一个sap.m.DateRangeSelection,它接受JavaScript Date对象作为 dateValue 和 secondDateValue ,并且要将这些属性绑定到模型,其中的属性如< strong> startDate 和 endDate 是yyyy-MM-dd模式的日期字符串。 在这种情况下,示例自定义数据类型可以像这样:
sap.ui.define([
"sap/ui/model/SimpleType",
"sap/ui/core/format/DateFormat"
], function(SimpleType, DateFormat) {
"use strict";
return SimpleType.extend("MyProject.model.ISODateType", {
/**
* Converts JavaScript Date object to ISO date string
*
* @public
* @param {string} sISO the ISO value of the formatted property
* @returns {string}
*/parseValue: function(oDate) {
var oFormat = DateFormat.getDateInstance({
pattern: "yyyy-MM-dd"
});
return oFormat.format(oDate);
},
/**
* Produces JavaScript Date object from ISO date string
*
* @public
* @param {string} sISO the ISO value of the formatted property
* @returns {string}
*/
formatValue: function(sValue) {
return new Date(sValue);
},
/**
* Validates the value to be parsed (should be ISO date string)
*
* @public
* no client side validation is required
* @returns {boolean} true
*/
validateValue: function(sValue) {
var sPattern = /(\d{4})-(\d{2})-(\d{2})/;
return sValue.match(sPattern);
}
});
});
XML视图中的绑定看起来像这样:
<DateRangeSelection
width="30%"
dateValue="{
path: '/startDate',
type: 'MyProject.model.ISODateType'
}"
secondDateValue="{
path: '/endDate',
type: 'MyProject.model.ISODateType'
}"
change="onDateIntervalChange"/>
答案 1 :(得分:2)
我也被同样的10k日期困扰。我的模式是{pattern: 'MMMM Y'}
。将其更改为{pattern: 'MMMM yyyy'}
可解决此问题。我找不到关于“ Y”和“ y”之间差异的任何文档。
答案 2 :(得分:1)
https://openui5.hana.ondemand.com/#/api/sap.ui.core.format.DateFormat/methods/sap.ui.core.format.DateFormat.getDateInstance @since 1.34.0包含模式符号(例如“ yMMMd”或“ Hms”),这些模式符号将转换为使用的语言环境中的模式,该模式与所需的符号最匹配。这些符号必须按规范顺序排列,即:时代(G),年份(y / Y),季度(q / Q),月份(M / L),星期(w / W),周几( E / e / c),日期(d / D),小时(h / H / k / K / j / J),分钟(m),秒(s),时区(z / Z / v / V / O / X / x)参见http://unicode.org/reports/tr35/tr35-dates.html#availableFormats_appendItems
类似:https://gist.github.com/bvanzyl/b3b64306a7363f0b3e043608b48d8326
formatDateStr: function(data){
if(data === null || data === undefined){
return data;
}else{
var oDate = new Date(data);
var iLocalTime = oDate.getTime();
// Berlin timezone = UTC+1 = 1hr = 60min ahead
// 60min * 60000 for time in milliseconds
var iBerlinOffset = 60 * 60000;
var iLocalOffset = oDate.getTimezoneOffset() * 60000;
var iBerlinTime = iLocalTime + iLocalOffset + iBerlinOffset;
oDate.setTime(iBerlinTime);
var dateFormat = sap.ui.core.format.DateFormat.getDateInstance({pattern : "MMM, dd YYYY" });
var dateFormatted = dateFormat.format(oDate);
return dateFormatted;
}
}
};