Skip to content

Commit

Permalink
feat(site/blog): update article of ssr timezone
Browse files Browse the repository at this point in the history
  • Loading branch information
qhanw committed Oct 12, 2023
1 parent 67a975c commit a197343
Showing 1 changed file with 3 additions and 5 deletions.
8 changes: 3 additions & 5 deletions site/blog/posts/ssr-timezone.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@ description: 服务端渲染时,因服务器与客户端所在地时区的不

在习惯了`csr`渲染的今天,我们在处理时间时通常采用时间格式化插件如:`dayjs``moment`(已停止维护)、`date-fns`等时间库来解决,由于是在客户端,因此很少出现时间不正确的问题,因为这些时间插件已经在基于客户端时区环境帮我们处理好了。但在服务端渲染时,由于服务器一般会统一个时区标准,通常为零时区(也称中时区),以此为标准存储、处理时间,因此在服服器渲染时间数据后,呈现给用户的都是以服务器时区为标准的时间。由于不同用户访问所在时区不同,但时间返回又是服务器时间,不符合生活上直观的时间,因此我们该如何解决这类问题呢?

> 跳过前置概念:[解决方案](#前置处理)
---
直接查看:[解决方案](#解决方案)

### TOC

Expand All @@ -19,7 +17,7 @@ description: 服务端渲染时,因服务器与客户端所在地时区的不
最近在处理`nextjs`服务端渲染时,遇到时间格式化后在,客户端展示晚上8小时的问题,刚开始想着是如何处理服务器时区问题,因此查找了很多关于修服务器配置,以及更改`nodejs`环境配置的资料,但收效甚微。后来在与做后端的朋友聊及此问题时,发现从一开始我的方向都错了。因此在这里总结一下,以供需要的同学处理类似问题。


### 时间基本概念
### 时间相关概念

#### 时间标准

Expand Down Expand Up @@ -69,7 +67,7 @@ export default function DateFormat({ short, value, format }: DateFormatProps) {

### 服务端处理

> 该方案未经验证,此处提供一个解决方案。方案相对于交由客户端渲染来说较为复杂。
该方案未经验证,此处仅提供一个参考解决方案。方案相对于交由客户端渲染来说较为复杂。**推荐还是使用客户端渲染方式。**

1. 服务端可以通过客户端发送的 HTTP 请求头中的 "Accept-Timezone" 字段获取客户端的时区信息。这个字段是由客户端的浏览器自动生成并发送的,通常是形如 "GMT+08:00" 的字符串。

Expand Down

1 comment on commit a197343

@vercel
Copy link

@vercel vercel bot commented on a197343 Oct 12, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

qhan – ./

qhan.wang
qhan-git-main-qhanw.vercel.app
qhan-qhanw.vercel.app

Please sign in to comment.