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。它的兼容性很好,并且有很好的文档。