为什么Ionic-2 Calendar在传递给js Date()后,在调用onViewTitleChanged时给出 "无效日期"?

问题描述 投票:0回答:1

我想弄清楚为什么我在把它传递给 var sDate = new Date(title). 我的目标是只得到当前月份,所以我可以在sqlite上查询它。

enter image description here

在ionic-cordova上使用ionic 4,ionic2-calendar和angular。

我有以下的ionic2-calendar方法。

onViewTitleChanged(title)
{
    console.log("onViewTitleChanged:")
    console.log(title)

    var sDate = new Date(title)
    console.log("check Date:")
    console.log(sDate)

    console.log("typeof:")
    console.log(typeof title);
}

它的输出如下。

onViewTitleChanged: 2020年5月

检查日期:无效日期

typeof: string

enter image description here

我试着运行一个单文件date.js,并尝试在node上运行。

node date.js

并给出以下输出。

sDate:2020-04-30T16:00:00.000Z

我也试着运行一个代码片段,工作正常。但在ionic设备上,它不?

var title = "May 2020"

console.log("onViewTitleChanged:")
console.log(title)

var sDate = new Date(title)
console.log("check Date:")
console.log(sDate)

console.log("typeof:")
console.log(typeof title);

我无法理解为什么它在模拟器(iOS)上不能工作,使用Safari调试也不能在设备上工作。

javascript node.js ionic-framework ionic2-calendar
1个回答
0
投票

这是我为解决我的问题所做的。谢谢你的建议,我应该在Safari上传递一个有效的ISO 8601。

我的解决方案是拆分通过月和年,并重新格式化它。

// Passed Month, Year Only
var title = "May 2020"

// Split Ionic Month and Year
var sd = title.split(" ")

// Format to Proper Date
var pd = sd[0] + ' 1, ' + sd[1]

var sDate = new Date(pd)
console.log("Proper Date Parsed:")
console.log(sDate)

var month = '0' + (sDate.getMonth() + 1);
var year = sDate.getFullYear();

console.log("Month(slice):" + month.slice(-2))
console.log("Year(slice):" + year)

现在可以用了。

热门问题
推荐问题
最新问题