Javascript 从UTC时区确定DST或CST时区

Javascript 从UTC时区确定DST或CST时区,javascript,node.js,Javascript,Node.js,我有UTC时区日期,我想根据DST是否应用于同一城市来转换CST或DST 因为我的浏览器不是基于同一个城市,所以当地时间没有用。 示例:我的用户来自印度,但他们也会看到纽约日期的数据 我有一个基于纽约的服务器,所以使用SSR我可以得到服务器的日期,但它总是在CST中显示我如何将日期更改为DST?试试这段代码。这可能对你有帮助 let d = new Date() let utc = d.getTime() + (d.getTimezoneOffset() * 60000) let t

我有UTC时区日期,我想根据DST是否应用于同一城市来转换CST或DST

因为我的浏览器不是基于同一个城市,所以当地时间没有用。 示例:我的用户来自印度,但他们也会看到纽约日期的数据


我有一个基于纽约的服务器,所以使用SSR我可以得到服务器的日期,但它总是在CST中显示我如何将日期更改为DST?

试试这段代码。这可能对你有帮助

  let d = new Date()
  let utc = d.getTime() + (d.getTimezoneOffset() * 60000)
  let today = new Date(utc - (3600000 * 6))  // 6 is for cst timezone. we can change this to get other timezome . this is offset 

  let dd = today.getDate()
  let mm = today.getMonth()+1
  let yy = today.getFullYear()
  let hh = today.getHours()
  let i  = today.getMinutes()
  let sec = today.getSeconds()

  hh = hh.toString().length<2?("0"+hh):hh
  mm = mm.toString().length<2?("0"+mm):mm
  i = i.toString().length<2?"0"+i:i
  sec = sec.toString().length<2?"0"+sec:sec

  let timestamp = dd+'/'+mm+'/'+yy+' '+hh+':'+i+':'+sec
  console.log('timestamp ',timestamp)
let d=新日期()
设utc=d.getTime()+(d.getTimezoneOffset()*60000)
让今天=新日期(utc-(3600000*6))//6表示cst时区。我们可以改变这一点,以获得其他时间僵尸。这是补偿
让dd=today.getDate()
让mm=today.getMonth()+1
让yy=today.getFullYear()
让hh=today.getHours()
让我=今天。getMinutes()
让sec=today.getSeconds()
hh=hh.toString().length您可以使用它将UTC日期转换为特定时区。这将遵守本地DST规则,并且是本机JavaScript代码(不需要库!)

因此,如果我们有UTC日期列表,我们可以转换为特定的时区。我已经创建了UTC日期和时区的列表,并格式化了该时区和日期的日期

当然,您可以选择不同的显示区域设置,例如,如果您有印度客户机,您可以使用“en-in”或您认为最好的显示区域设置

您应该能够在服务器端或(最好)客户端进行任何时区转换。如果您以UTC格式(例如YYYY-MM-DDTHH:MM:ssZ)向客户端发送所有日期,则可以在客户端代码中转换为客户端时区

const displayLocale=“en-us”//将其设置为en gb、en in等。。
施工日期列表=[新日期(“2019-06-01T12:00:00Z”)、新日期(“2019-12-01T12:00:00Z”);
const timeZoneList=[“美国/纽约”,“美国/洛杉矶”,“亚洲/加尔各答];
uctDateList.forEach(utcDate=>{
console.log(“\n服务器时间:”,utcDate.toISOString());
timeZoneList.forEach(时区=>{
log(`Time in timezone(${timezone}):`,utcDate.toLocaleString(displayLocale,{timezone}));
})

});您是否尝试过查找任何库,如moment js?不能使用moment和其他库,因为它会增加捆绑包的大小。这就像是最后一个选项。我的意思是,如果您是通过服务器端的节点进行转换,那么包大小应该不会太重要。不确定时刻在SSR上起作用。从未尝试过你可以建议SSR意味着服务器端渲染,并且你有node.js作为标记,我只是假设你使用node.js为你的应用程序提供服务器?问题是我不知道它是CST或DST时区。由于这些时区根据城市而变化。确定根据城市,您可以更改偏移量。在这种情况下,行号3处的偏移量为6。所以你们需要根据城市来改变它,就像我们改变乡村时间一样。问题是城市的偏移量。假设美国的城市是plano,有两个时区CST和DST,您将如何确定从日期开始,这是为该日期设置的时区OFF