【问题标题】:Date Format from (20180810) to (10 Aug 2018)日期格式从(20180810)到(2018 年 8 月 10 日)
【发布时间】:2019-09-08 10:14:44
【问题描述】:

谁能帮我解决日期格式问题?

我试过new Date(NumberValue),但返回无效日期

模拟服务器:

"NumberValue": "2.018081E7"

格式化程序:

 if(ValueType === "D"){
                    return parseFloat(NumberValue);

【问题讨论】:

  • @userfrh "NumberValue" 属性似乎不是 Edm.DateTime (OData V2) 或 Edm.Date (OData V4) 类型。请确保首先为所有包含日期​​值的属性设置正确的 EDM 类型。

标签: javascript xml odata sapui5


【解决方案1】:

你可以实现使用moment.js

var val = parseFloat(2.018081E7);
var date = moment(val,'YYYYMMDD').format('DD MMM YYYY');
console.log(date)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

【讨论】:

  • 我还是新手,我应该把
  • @userfrh 供您参考script include xml
【解决方案2】:

您可以使用正则表达式将日期字符串拆分为年、月、日,然后您可以将其传递给new Date()

const s = '20180810'

const rx = /(\d{4})(\d{2})(\d{2})/
let [_, Y, M, D] = s.match(rx)

console.log(new Date(Y, M - 1 , D)) // month is zero indexed

根据评论编辑:
如果你可以使用解构——match() 只是返回一个数组,这样你就可以使用索引来达到同样的效果:

var s = '20180810'

var rx = /(\d{4})(\d{2})(\d{2})/
var m = s.match(rx)

console.log(new Date(m[1], m[2] - 1, m[3])) // month is zero indexed

【讨论】:

  • 嘿,谢谢它在我使用 ES6 时确实有效。但不幸的是,我使用 Javascript ES5.let [_, Y, M, D] = s.match(rx) 这段代码对我不起作用。我已经检查过了,它说 s.match 不是一个函数。
  • @userfrh match() 只是返回一个数组,因此您可以将其保存为数组并对其进行索引。见编辑。
  • s.match 仍然显示不是函数。我试着做 var rx = new RegExp('/(\d{4})(\d{2})(\d{2})/');也是这样。
  • 这很奇怪 @userfrh match() 已经存在了很长时间 - 我认为是 ECMAScript 3。你确定你从一个字符串开始。 20180810 是否可能是一个数字或 s 未定义?
猜你喜欢
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 2012-08-17
  • 1970-01-01
  • 2019-03-26
  • 1970-01-01
相关资源
最近更新 更多