javascript: 显示偏远地区天气数据的AM/PM次
javascript: Show remote location's AM/PM times for remote location's weather data
这样的函数会是什么样子 return 这里是当地时间,那里是当地时间,那里是日出,那里是日落,天气预报的时间和每个 3 小时预报的时间?
在下面单独 post 回答我自己的问题。
我正在使用 google 个地方 api 获取纬度、经度和远程位置的 utc_offset。
我正在使用 openweathermap api 获取远程位置的当前天气报告、日出、日落和 24 小时预报的时间(以 utc 格式),以 3 小时为增量。
我创建了一个 javascript date() 对象,我使用 getTimezoneOffset() 函数从中获取我的(非远程)位置的 utc_offset。
我使用一个函数(如下所示)将 UNIX 时间戳转换为时钟小时和分钟(根据 Whosebug 5-21-2011 Convert a Unix timestamp to time in JavaScript 上的这个 post 修改以供我自己使用。)
我需要做的是:
- 获取报告的任何天气信息的远程 utc Unix 时间(当前天气、日出、日落、多个 3 小时预报)
- 减去我的本地 utc 偏移量以获得我当前在格林威治时间的调整后的 unix 时间。
- 添加远程 utc 偏移量以在远程位置获得调整后的 unix 时间
- 将调整后的 unix 时间传递给 TimeConverter 函数。
使用这些信息,我 post 编辑了下面的函数,它使用 javascript class 对象来保存和 return 所有需要的信息。
这是我的UTC日期
来自本地设备上的地理定位调用的时间戳。
时间戳:1523646017649(必须向下调整 1000 以匹配来自 google 地点和开放天气地图的调整时间戳)
来自 openweathermap 天气的时间戳api 调用远程经度和纬度
dt:1523644200 (response.dt)
日出:1523595750 (response.sys.sunrise)
日落:1523644821 (response.sys.sunset)
前 3 小时预报:1523653200 (response.sys.sunrise)
我的 utcoffset 来自 dateObj = new date();然后 dateObj.getTimezoneOffset()
我的 utc_offset: 18000
来自google个地方apiutc_offset
utc_offset: 7200
//To get current time where I am at, I can use this call and this function<br>
var myTime = timeConverter(Date.now()/1000,1);
// Return Result: Apr-13-2018, 2pm
function timeConverter(UNIX_timestamp,hhmmOpts){
// based on code written by @shomrat and edited by @Chin at
//
var a = new Date((UNIX_timestamp) * 1000);
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var year = a.getFullYear();
var month = months[a.getMonth()];
var day = a.getDate();
var hour = a.getHours();
var amPm = ( (hour < 12) ? "a" : "p" );
if ( hour == 0) {
hour = "12" ;
} else if ( hour > 12 ) {
hour = (hour - 12);
}
var min = a.getMinutes().toString().padStart(2,"0") ;
var time = "" ;
if (hhmmOpts == 0) { // Apr 18, 2018, 11a
time += month + '-' + padLeft(day,2,'0') + '-' + year + ', ' + padLeft(hour,2,' ') + amPm;
} else
if (hhmmOpts == 1) { // Apr 18, 2018, 11:27a
time += month + '-' + padLeft(day,2,'0') + '-' + year + ', ' + hour + ":" + min + amPm;
} else
if (hhmmOpts == 2) { // 11p
time += hour + ":" + min + amPm;
}
return time;
}
地方时间class
用法:
// Get the googleplaces api offset (snipet)
...
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var place = autocomplete.getPlace();
// console.log(place);
utcOffset = place.utc_offset;
getWeather(utcOffset);
}
...
// Create a new placetime object
// To get device location local time use utcOffset==0.
plTimeObj = new placeTime(utcOffset);
// Get current time at present location
var plTime = timeConverter(plTimeObj.getCurrentTime(),1) ;
// Get sunrise at remote location
// Comes from call to openweathermap (see response.sys.sunrise above )
sunriseTime = timeConverter( plTimeObj.getPlaceTime(resp.sys.sunrise) ,2) ;
// Get the time of the weather report (from openweathermap)
var rptTime = timeConverter( plTimeObj.getPlaceTime(resp.list[i].dt),2 ) ;
以下 class 包含在远程位置计算当地时间所需的所有信息,并提供根据需要检索信息的方法。
class placeTime {
constructor(utcOffset) {
this.dateObj = new Date();
this.local2Utc = this.dateObj.getTimezoneOffset() * 60 ;
this.utc2Place = (utcOffset==0 ? (0-this.local2Utc) : (utcOffset * 60) );
this.currentTime = this.dateObj.getTime()/1000 + this.local2Utc + this.utc2Place ;
}
getPlaceTime(localTime) {
var pTime = localTime + this.local2Utc + this.utc2Place ;
return pTime;
}
getCurrentTime() {
return this.currentTime ;
}
}
这样的函数会是什么样子 return 这里是当地时间,那里是当地时间,那里是日出,那里是日落,天气预报的时间和每个 3 小时预报的时间?
在下面单独 post 回答我自己的问题。
我正在使用 google 个地方 api 获取纬度、经度和远程位置的 utc_offset。
我正在使用 openweathermap api 获取远程位置的当前天气报告、日出、日落和 24 小时预报的时间(以 utc 格式),以 3 小时为增量。
我创建了一个 javascript date() 对象,我使用 getTimezoneOffset() 函数从中获取我的(非远程)位置的 utc_offset。
我使用一个函数(如下所示)将 UNIX 时间戳转换为时钟小时和分钟(根据 Whosebug 5-21-2011 Convert a Unix timestamp to time in JavaScript 上的这个 post 修改以供我自己使用。)
我需要做的是:
- 获取报告的任何天气信息的远程 utc Unix 时间(当前天气、日出、日落、多个 3 小时预报)
- 减去我的本地 utc 偏移量以获得我当前在格林威治时间的调整后的 unix 时间。
- 添加远程 utc 偏移量以在远程位置获得调整后的 unix 时间
- 将调整后的 unix 时间传递给 TimeConverter 函数。
使用这些信息,我 post 编辑了下面的函数,它使用 javascript class 对象来保存和 return 所有需要的信息。
这是我的UTC日期
来自本地设备上的地理定位调用的时间戳。
时间戳:1523646017649(必须向下调整 1000 以匹配来自 google 地点和开放天气地图的调整时间戳)
来自 openweathermap 天气的时间戳api 调用远程经度和纬度
dt:1523644200 (response.dt)
日出:1523595750 (response.sys.sunrise)
日落:1523644821 (response.sys.sunset)
前 3 小时预报:1523653200 (response.sys.sunrise)
我的 utcoffset 来自 dateObj = new date();然后 dateObj.getTimezoneOffset()
我的 utc_offset: 18000
来自google个地方apiutc_offset
utc_offset: 7200
//To get current time where I am at, I can use this call and this function<br>
var myTime = timeConverter(Date.now()/1000,1);
// Return Result: Apr-13-2018, 2pm
function timeConverter(UNIX_timestamp,hhmmOpts){
// based on code written by @shomrat and edited by @Chin at
//
var a = new Date((UNIX_timestamp) * 1000);
var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
var year = a.getFullYear();
var month = months[a.getMonth()];
var day = a.getDate();
var hour = a.getHours();
var amPm = ( (hour < 12) ? "a" : "p" );
if ( hour == 0) {
hour = "12" ;
} else if ( hour > 12 ) {
hour = (hour - 12);
}
var min = a.getMinutes().toString().padStart(2,"0") ;
var time = "" ;
if (hhmmOpts == 0) { // Apr 18, 2018, 11a
time += month + '-' + padLeft(day,2,'0') + '-' + year + ', ' + padLeft(hour,2,' ') + amPm;
} else
if (hhmmOpts == 1) { // Apr 18, 2018, 11:27a
time += month + '-' + padLeft(day,2,'0') + '-' + year + ', ' + hour + ":" + min + amPm;
} else
if (hhmmOpts == 2) { // 11p
time += hour + ":" + min + amPm;
}
return time;
}
地方时间class 用法:
// Get the googleplaces api offset (snipet)
...
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var place = autocomplete.getPlace();
// console.log(place);
utcOffset = place.utc_offset;
getWeather(utcOffset);
}
...
// Create a new placetime object
// To get device location local time use utcOffset==0.
plTimeObj = new placeTime(utcOffset);
// Get current time at present location
var plTime = timeConverter(plTimeObj.getCurrentTime(),1) ;
// Get sunrise at remote location
// Comes from call to openweathermap (see response.sys.sunrise above )
sunriseTime = timeConverter( plTimeObj.getPlaceTime(resp.sys.sunrise) ,2) ;
// Get the time of the weather report (from openweathermap)
var rptTime = timeConverter( plTimeObj.getPlaceTime(resp.list[i].dt),2 ) ;
以下 class 包含在远程位置计算当地时间所需的所有信息,并提供根据需要检索信息的方法。
class placeTime {
constructor(utcOffset) {
this.dateObj = new Date();
this.local2Utc = this.dateObj.getTimezoneOffset() * 60 ;
this.utc2Place = (utcOffset==0 ? (0-this.local2Utc) : (utcOffset * 60) );
this.currentTime = this.dateObj.getTime()/1000 + this.local2Utc + this.utc2Place ;
}
getPlaceTime(localTime) {
var pTime = localTime + this.local2Utc + this.utc2Place ;
return pTime;
}
getCurrentTime() {
return this.currentTime ;
}
}