因此我们有多个客户端,位于多个时区。我正在从API中提取一些日期,并且此字符串中的日期/时间正是我需要显示的内容。我一直在研究这个问题,并且挖掘了一段时间,但仍然没有得出一个明确的答案。进入的字符串格式如下:
"2017-12-29T20:00:00"
我想要的是将日期和时间原样提取为两个字符串(无时区偏移,无论观众位于何处),但我遇到了一些问题。也希望以正确的方式格式化它。例如:
"M/d/yyyy"
"hh:mm AM/PM" (12 hour)
我已经尝试了很多方法来对抗这种情况,并且我真的不想只是抓住子串,但我很想这样做。任何帮助表示赞赏。
答案 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)。