从JS Date对象中提取时间而不偏移时区

时间:2017-11-15 20:01:16

标签: javascript date iso8601

因此我们有多个客户端,位于多个时区。我正在从API中提取一些日期,并且此字符串中的日期/时间正是我需要显示的内容。我一直在研究这个问题,并且挖掘了一段时间,但仍然没有得出一个明确的答案。进入的字符串格式如下:

"2017-12-29T20:00:00"

我想要的是将日期和时间原样提取为两个字符串(无时区偏移,无论观众位于何处),但我遇到了一些问题。也希望以正确的方式格式化它。例如:

"M/d/yyyy"
"hh:mm AM/PM" (12 hour)

我已经尝试了很多方法来对抗这种情况,并且我真的不想只是抓住子串,但我很想这样做。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

使用此代码:

WITH cte as (
    select *,
           row_number() over (partition by TeamId
                              order by DateSubmitted ) as rn,
           count(*) over (partition by TeamId) as total_submission
    from [Kaggle].[dbo].[Submissions]
)
SELECT *
FROM cte
WHERE rn = 1 

答案 1 :(得分:0)

考虑重新格式化字符串,它避免了内置解析器和时区的所有问题:

function reformatTimestamp(s) {
  function z(n){return (n<10?'0':'')+ +n}
  var b = s.split(/\D/);
  var h = b[3]%12 || 12;
  var ap = b[3] < 12? 'AM':'PM';
  return b[1] + '/' + b[2] + '/' + b[0] +
         ' ' + z(h) + ':' + z(b[4]) + ' ' + ap;
}

console.log(reformatTimestamp('2017-12-29T20:00:00')) // 12/29/2017 08:00 PM

我认为最好用前导零填充月和日(但我也使用明确的日期格式,如DD-MMM-YYYY而不是特殊的m / d / y)。