在我的php应用程序中,我像这样设置意大利时区:

date_default_timezone_set('Europe/Rome');


上面的字符串位于我的config.php文件(应用程序的核心)中。无论如何,从后端我将momentjsCodeIgniter框架一起使用。当用户从正确的输入中选择日期时,结果如下:

javascript - 分钟操作后,Momentjs返回错误的日期-LMLPHP

现在我从这样的输入中获取值:

var end_date_temp = Date.parse($('#end-datetime').val());


最初的结果是错误的:


  2016年3月1日星期二,格林尼治标准时间+0100(或西欧欧罗巴赛区)


其余代码是:

var end_date = moment(end_date_temp).add(serviceDuration, 'minutes').format('DD/MM/YYYY HH:mm');
$('#end-datetime').val(end_date);


注意:我也尝试设置moment.locale('it'),但是结果仍然相同,在我的javascript库中,我具有momentjs的意大利时区。怎么了?

更新代码:

var end_date_temp = moment($('#end-datetime').val())._i;
var end_date = moment(moment(end_date_temp).add(serviceDuration, 'minutes')).format('DD/MM/YYYY HH:mm');
$('#end-datetime').val(end_date);

最佳答案

// parse the input string to a moment object, **specifying the input format**
var end_date = moment($('#end-datetime').val(), 'DD/MM/YYYY HH:mm');

// manipulate it as desired
end_date.add(serviceDuration, 'minutes');

// format it to the specified output format, and assign the result back to your field
$('#end-datetime').val(end_date.format('DD/MM/YYYY HH:mm'));


您可以根据需要在一行代码中完成此操作。

$('#end-datetime').val(moment($('#end-datetime').val(), 'DD/MM/YYYY HH:mm').add(serviceDuration, 'minutes').format('DD/MM/YYYY HH:mm'));


语言环境设置对于这段特定的代码并不重要,因为您不使用任何语言环境特定的功能或格式说明符

10-05 19:30