在我的php应用程序中,我像这样设置意大利时区:
date_default_timezone_set('Europe/Rome');
上面的字符串位于我的
config.php
文件(应用程序的核心)中。无论如何,从后端我将momentjs
与CodeIgniter
框架一起使用。当用户从正确的输入中选择日期时,结果如下:现在我从这样的输入中获取值:
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'));
语言环境设置对于这段特定的代码并不重要,因为您不使用任何语言环境特定的功能或格式说明符