如何在JavaScript中指定本地日期和时间
我有一个Android应用程序,我想在给定的日期和时间显示通知(所有本地)。但是,如果我使用像这样的UTC格式,通过json从服务器获取:如何在JavaScript中指定本地日期和时间,javascript,android,datetime,locale,android-notifications,Javascript,Android,Datetime,Locale,Android Notifications,我有一个Android应用程序,我想在给定的日期和时间显示通知(所有本地)。但是,如果我使用像这样的UTC格式,通过json从服务器获取: 2016-04-14T11:30:00Z 使用以下功能可在全球范围内同时显示该消息: var mTime = new Date( element.dateNtime ); 我想要的是在当地时间上午11:30在任何地方显示消息。如英国上午11:30,所有用户都会收到通知,但美国用户会在5小时后收到通知,即当地时间11:30(美国东部时间或其他时间) 更新
2016-04-14T11:30:00Z
使用以下功能可在全球范围内同时显示该消息:
var mTime = new Date( element.dateNtime );
我想要的是在当地时间上午11:30在任何地方显示消息。如英国上午11:30,所有用户都会收到通知,但美国用户会在5小时后收到通知,即当地时间11:30(美国东部时间或其他时间)
更新
我想我已经找到了一个解决办法,但从下面的答案来看,这个问题似乎不是太清楚,就是不被理解。以下是场景:
a。我的Cordova应用程序由用户在其手机上打开
B应用程序在启动时以“2016-04-14T11:30:00Z”格式从服务器读取字符串日期和消息。因此,不存在使用new date()函数获取当前日期的问题。
C基于此,应用程序使用Cordova的通知插件设置给定日期和时间的通知。
D到时候会弹出通知
解决方案是对日期使用非ISO格式,即“Wed,09 Aug 1995 00:00:00”,以及date.parse()函数。使用上述示例,代码将变为:
var mTime = Date.parse( element.dateNtime );
如果以这种格式提供日期('Wed,09 Aug 1995 00:00:00'),变量mTime将包含完全相同的值。但是,如果日期时间以ISO格式提供(2016-04-14T11:30:00Z),则mTime将包含转换为用户区域设置的时间。如果您使用的是PHP服务器,则可以通过使用以下代码轻松实现:
$serverdate = date("d m Y");
$indiantime = date('d/m/Y h:i:s A', time()+19800);
变量“serverdate”返回服务器的当前日期,变量“indian time”将时间存储为印度标准时间
要将时间转换为适当的区域,请使用此公式
x*60*60
其中“x”是GMT差值,印度为5.30
所以5.5*60*60=19800只需实例化一个新的日期对象
var now = new Date();
这将使用客户端的本地时间创建一个新的日期对象。要显示类似于上午8:30<代码>的内容,请使用
var time = new Date().toString("hh:mm tt");
您可以对时区使用newdate().getTimezoneOffset()/60
。还有一个toLocaleString()
方法用于使用用户的区域设置显示日期