Я пытаюсь работать с датой, чтобы получить сейчас закат или восход .

Поскольку я не уверен, что делать с If Else заявлением о дате

Я получил данные, когда закат и когда восход.

Но было интересно, как выполнить условие, если текущая дата - закат или восход солнца с +-15 minutes

Пример:

Текущая дата: 2015-12-17T 17:45 : 00 (или между 17:45 до 18:15)

Закат: 2015-12-17T 18:00 : 00

Rusult = Закат (потому что +-15 minutes)

Вот мой код на данный момент:

var SunData = {'set':'2015-12-17T09:14:56', 'rise':'2015-12-17T15:10:52'};

var date = new Date();
    date = date.getTime();

var sun_rise = new Date(SunData['rise']);
    sun_rise = sun_rise.getTime();

var sun_set = new Date(SunData['set']);
    sun_set = sun_set.getTime();

var sunRiseSetDiff = 900000; // 15 minutes

// Here
var result;
if(false) {
    result = 'sun-rise';
} else if (false) {
    result = 'sun-set';
} else {
    result = 'none';
}

https://jsfiddle.net/gd1s1o0y/

Можете ли вы помочь мне с If Else заявлением ? Спасибо

1
l2aelba 17 Дек 2015 в 12:39

3 ответа

Лучший ответ

Ты имеешь ввиду

var result = 'none';
if(Math.abs(date - sun_rise) <= sunRiseSetDiff) {
    result = 'sun-rise';
}
else if(Math.abs(date - sun_set) <= sunRiseSetDiff) {
    result = 'sun-set';
}

Скрипка

2
mplungjan 17 Дек 2015 в 09:51

Проверьте эту скрипку

var SunData = {'set':'2015-12-17T09:14:56', 'rise':'2015-12-17T15:10:52'};

var date = new Date();
        date = date.getTime();

var sun_rise = new Date(SunData['rise']);
        sun_rise = sun_rise.getTime();

var sun_set = new Date(SunData['set']);
        sun_set = sun_set.getTime();

var sunRiseSetDiff = 900000; // 15 minutes

// Here
var sunsetResult = Math.abs( date - sun_set ) > sunRiseSetDiff ? false: true;
var sunriseResult = Math.abs( date - sun_rise ) > sunRiseSetDiff ? false: true;

if(sunriseResult) {
    result = 'sun-rise';
} else if (sunsetResult) {
    result = 'sun-rise';
} else {
    result = 'none';
}

alert(result);
2
gurvinder372 17 Дек 2015 в 09:46

Просто переписать свою функцию с комментариями.

// Always parse date strings manually, you can use a library if you want
// but a bespoke function is pretty simple if the format is guaranteed
// and is a valid date
function qParse(s) {
  var b = s.split(/\D/);
  return new Date(b[0], b[1]-1, b[2], b[3]||0, b[4]||0, b[5]||0, b[6]||0);
}
    
// The OP seemed to have sunrise and sunset transposed
var sunData = {'rise':'2015-12-17T09:14:56', 'set':'2015-12-17T15:10:52'};

// There is no need for getTime, date objects can be used in simple
// arithmetic directly
var now = new Date();
var buffer = 9e5; // 15 mintues

// Initialise result to a default string
var result = 'Not near sunrise or sunset';
    
// Change value if near sunset
if (Math.abs(now - qParse(sunData.set)) <= buffer) {
  result = "Close to sunset"; 

// Otherwise, change value if near sunrise
} else if (Math.abs(now - qParse(sunData.rise)) <= buffer) {
  result = "Close to sunrise"; 
}
    
// Show result
document.write(result);
1
RobG 18 Дек 2015 в 02:38