【问题标题】:Detect day through UTC-5 and obtain variable value通过UTC-5检测日期并获取变量值
【发布时间】:2021-09-19 10:01:39
【问题描述】:

大家好,JavaScript 中有这个变量

gateco = {
  "thursday": [{
    "open": "12:00",
    "close": "18:49"
  }],
  "friday": [{
    "open": "12:00",
    "close": "18:59"
  }]
};

如何获取UTC-5时间的天数,并根据天数分别获取开盘价和收盘价?

【问题讨论】:

  • 问题是访问变量的数据。尝试gateco.thursday,但没有结果
  • 我以这种方式解决了它,现在我发现自己只有得到 JSON.parse(gateco) 的那一天的混乱,我同意 console.log(gateco.thursday[0].open) ;
  • 我解决了 gateco = JSON.parse(t.restaurant.schedule_data), weekday = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', '星期六'][新日期().getDay()],
  • 现在作为这两个变量之一来获得?我试过了,但它不起作用 console.log(gateco.weekday);

标签: javascript arrays object utc


【解决方案1】:

你可以这样做...
see time zone list here

const
  dateTimeOption =
    { timeZone : 'Etc/GMT+5'
    , hour12   : false
    , weekday  : 'long'
    , hour     : '2-digit'
    , minute   : '2-digit' 
    }
, gateco =
    { thursday : [ { open: '12:00', close: '18:49' } ]  // why is it an Array ?
    , friday   : [ { open: '12:00', close: '18:59' } ] 
    } 

let isOpenNow  = false
  , [wDay,h,m] = new Intl.DateTimeFormat('en-US', dateTimeOption)
                  .format(new Date())
                  .split(/:| /)
                  .map(s=>Number(s)||s.toLowerCase() )                  

if ( gateco[wDay] )
  {
  let hm = (h *100) +m // simplied for comparing 
    , h_m_Open  = gateco[wDay][0].open
                    .split(':')
                    .reduce((hm,t,i)=>hm + (!i?100:1)*Number(t) ,0)
    , h_m_Close = gateco[wDay][0].close
                    .split(':')
                    .reduce((hm,t,i)=>hm + (!i?100:1)*Number(t) ,0)

  isOpenNow = (h_m_Open <= hm  && hm <= h_m_Close)
  }             
//console.log( wDay,h,m )
console.log( 'isOpenNow = ', isOpenNow)

【讨论】:

  • 他用太多的 if 做了不同的事情,但他的方式更加紧凑和智能。我很感激他。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 2021-04-13
  • 2021-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多