如何获得一个特定的部分moment.js/timezone.js日期

问题描述:

我很低的JavaScript。我开始为我的项目使用moment.js库,以使JavaScript代码在时间&日期之前工作,该日期始终与特定时区保持一致。但我正在努力了解如何访问我的变量的不同部分。我的代码:如何获得一个特定的部分moment.js/timezone.js日期

var ItalyZone = "Europe/Rome"; 
var currentTime= moment().tz(ItalyZone).format(); 
alert(currentTime.hours()); //this is not working.... 

如何访问变量 “currenTime” 的几个小时/分钟? 如何为变量“currentTime”设置新的小时?

使用简单的JavaScript日期()函数,我所能做的只是currentTime.getHours()/ currentTime.setHours(),但我应该怎么办使用moment.js ???

+0

格式怎么样? moment()。tz(ItalyZone).format(“hh”) - hours moment()。tz(ItalyZone).format(“mm”) - minutes – Sabik

为什么使用format当你只是想的时间,返回日期对象,而不是

var ItalyZone = "Europe/Rome"; 
var currentTime = moment().tz(ItalyZone).toDate(); // return JS date object 
var hours  = currentTime.getHours() 
+0

您的回答很好,但如果我更改计算机/智能设备时间,它也会影响可变小时数。我开始使用moment.js在我的项目中获取特定时区的特定实时时间,而时钟更改不会影响JavaScript代码。 – ThomasThomaz

+0

换句话说:代码不应该受到设备上时钟变化的影响:) – ThomasThomaz

+0

什么?当然,如果你改变计算机时钟,它会改变,Moment没有解决这个问题,这是与客户端日期一起工作时的继承缺陷,唯一的解决方案是从服务器获取日期。 – adeneo

可以使用get-set功能来做到这一点

moment().minute(Number); 
moment().minute(); // Number 
moment().minutes(Number); 
moment().minutes(); // Number 

获取或设置分钟。

+0

在我的代码中,我有很多地方需要比较我的变量currentTime的小时和分钟。我需要得到它的特定变量“currentTime”你的答案不解决我的问题:currentTime.moment()。minutes();不会给我结果。 – ThomasThomaz

您可以使用日期格式来获取日期时间的任何部分:

var ItalyZone = "Europe/Rome"; 
 
    
 
moment().locale(ItalyZone).format("yyyy"); // year 
 
moment().locale(ItalyZone).format("MM"); // month 
 
moment().locale(ItalyZone).format("DD"); // day 
 
moment().locale(ItalyZone).format("hh"); // hours 
 
moment().locale(ItalyZone).format("mm"); // minutes 
 
moment().locale(ItalyZone).format("ss"); // seconts 
 

 
console.log(moment().locale(ItalyZone).format("YYYY MM DD hh mm ss"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js"></script>