【问题标题】:.clone is not a function.clone 不是函数
【发布时间】:2026-01-29 07:00:01
【问题描述】:

我正在尝试获取一天的开始日期和结束日期。现在为此,我编写了以下代码:

var date_start_temp = $('#calendar').fullCalendar('getView').start;
console.log(date_start_temp)
var date_start = date_start_temp.clone().utc().format("ddd MMM DD YYYY HH:mm:ss");
var date_end = date_start.clone().startOf('day').add(1, 'day').format("ddd MMM DD YYYY HH:mm:ss");

console.log 返回:

2015 年 11 月 10 日星期二 01:00:00 GMT+0100 (ora solare Europa occidentale)

但是在下一行我得到了这个错误:

date_start_temp.clone(...).utc 不是函数

我不知道为什么。我只想得到这个最终结果:

date_start

2015 年 11 月 10 日星期二 00:00:00

日期结束

2015 年 11 月 11 日星期三 00:00:00

您如何看到我已将小时数设置为 0 并删除了 GMT,我不想要 GMT。我怎样才能做到这一点??

【问题讨论】:

  • 我正在使用momentjs,没有javascript的日期对象,请先阅读帖子。
  • 你确定.start返回一个momentjs对象吗?看起来不像,否则不会报错。
  • 是的。我已经在 chrome 控制台中打印了结果
  • 这只是告诉您该值代表一个日期。如果我执行console.log(new Date()),我会得到类似的输出。所以我想说,将值传递给 momentjs before 你试图克隆它。

标签: javascript jquery fullcalendar momentjs


【解决方案1】:

但在下一行我收到此错误 [...] 我不知道为什么。

.clone is a method of Moment.js. .start 似乎没有返回 Moment.js 实例,因此您不能在其上调用 .clone

先将值传递给moment

var date_start = moment(date_start_temp).utc().format("ddd MMM DD YYYY HH:mm:ss");

【讨论】:

  • 好的,对于 date_end?你怎么能看到我已经: var date_end = date_start.clone().startOf('day').add(1, 'day').format("ddd MMM DD YYYY HH:mm:ss");跨度>
  • 几乎一样:moment(date_start_temp).utc().startOf('day').add(1, 'day').format("ddd MMM DD YYYY HH:mm:ss");
  • 最后返回的日期是:2015 年 11 月 10 日星期二 00:00:00 GMT+0100,我想删除 +0100,因为在我的时区添加一个小时,我该怎么做?跨度>
  • 不确定你的意思。格式化数据的方式不会显示时区。当然,底层日期对象仍然包含时区信息。