时刻.js在 SvelteKit 中的 ssr 之后将语言环境更改为 'en'



Moment.js在ssr完成后将其区域设置更新为'en'。因此,日期显示在一秒钟内是正确的,但随后变为默认值。

路线/layout.svelte

<script>
import moment from 'moment';
moment.locale('ru');
</script>

我也试过

<script>
onMount(() => moment.locale('ru'));
</script>

在@depperm注释之后,我创建了一个helper函数,它使用store和普通JS

lib/帮助/date.ts

import { locale } from "$lib/store/locale"
let l = 'ru-RU';
locale.subscribe((loc) => l = loc);
export function date(date: Date, options?: Intl.DateTimeFormatOptions): string {
return date.toLocaleDateString(l, options ??  { year: 'numeric', month: 'long', day: 'numeric' });
}

lib/存储/locale.ts

import { writable } from "svelte/store";
export const locale = writable<string>('ru-RU');

但这对我来说似乎不是一个好的解决方案

使用date-fns。它的兼容性很好,并且有很好的文档。

相关内容

  • 没有找到相关文章

最新更新