使用每个块的 sapper-svelte 中的日期时间显示抵制我的逻辑
Date-Time display in sapper-svelte using each bloack is resisting my logic
我使用 sapper 将订单数据保存到我的 mongodb。一个字段保存输入订单的时间。我正在尝试在用户仪表板的正面显示订单时间(订单名称、日期和时间)。
除一个 js 日期 fn 给我错误外,一切正常。让我解释:
我的代码很简单,我在预加载中使用fetch fn
<script context="module">
export async function preload(page, session) {
const res = await this.fetch(`protectedpageserver`, {
credentials: 'include'
});
let response = await res.json()
return { data: response }
}
</script>
<script>
export let data
</script>
<ol>
{#each data as link}
<li >
<p><b> Order </b> : {link.order} </p>
<p> Date : {link.enteredAt.substring(0, 10)} </p>
<p> Time : {link.enteredAt.substring(11, 19)}</p>
<p>
Time : {link.enteredAt.toLocaleTimeString(undefined, {
hour: '2-digit',
minute: '2-digit'
})}</p>
</li>
{/each}
</ol>
第一次 substring() fn 工作:
<p> Time : {link.enteredAt.substring(11, 19)}</p>
第二次 toLocaleTimeString() fn 给我错误
TypeError: link.enteredAt.toLocaleTimeString is not a function
我的问题是为什么?
我可以在 forEach() 的服务器路由上处理 toLocaleTimeString() 并为前端提供所需的时间格式,但这让我很好奇为什么一个 fn 正在工作而第二个却产生错误,尽管两者都是 js日期函数。为什么会有这种行为?我可以用不同的方式编写 toLocaleTimeString() 以使其工作吗?
您将字符串传递给函数 toLocaleTimeString
,它是 Javascript 日期对象的实例方法。我知道它是一个字符串,因为它与 substring()
一起使用,它需要一个字符串并且如果您将日期对象传递给它就不会工作。
但是假设字符串 link.enteredAt
是日期的形状,下面的内容将起作用,因为 Svelte 允许您 运行 大括号中的 JS。
<p>
Time : {new Date(link.enteredAt).toLocaleTimeString(undefined, {
hour: '2-digit',
minute: '2-digit'
})}</p>
我使用 sapper 将订单数据保存到我的 mongodb。一个字段保存输入订单的时间。我正在尝试在用户仪表板的正面显示订单时间(订单名称、日期和时间)。
除一个 js 日期 fn 给我错误外,一切正常。让我解释: 我的代码很简单,我在预加载中使用fetch fn
<script context="module">
export async function preload(page, session) {
const res = await this.fetch(`protectedpageserver`, {
credentials: 'include'
});
let response = await res.json()
return { data: response }
}
</script>
<script>
export let data
</script>
<ol>
{#each data as link}
<li >
<p><b> Order </b> : {link.order} </p>
<p> Date : {link.enteredAt.substring(0, 10)} </p>
<p> Time : {link.enteredAt.substring(11, 19)}</p>
<p>
Time : {link.enteredAt.toLocaleTimeString(undefined, {
hour: '2-digit',
minute: '2-digit'
})}</p>
</li>
{/each}
</ol>
第一次 substring() fn 工作:
<p> Time : {link.enteredAt.substring(11, 19)}</p>
第二次 toLocaleTimeString() fn 给我错误
TypeError: link.enteredAt.toLocaleTimeString is not a function
我的问题是为什么? 我可以在 forEach() 的服务器路由上处理 toLocaleTimeString() 并为前端提供所需的时间格式,但这让我很好奇为什么一个 fn 正在工作而第二个却产生错误,尽管两者都是 js日期函数。为什么会有这种行为?我可以用不同的方式编写 toLocaleTimeString() 以使其工作吗?
您将字符串传递给函数 toLocaleTimeString
,它是 Javascript 日期对象的实例方法。我知道它是一个字符串,因为它与 substring()
一起使用,它需要一个字符串并且如果您将日期对象传递给它就不会工作。
但是假设字符串 link.enteredAt
是日期的形状,下面的内容将起作用,因为 Svelte 允许您 运行 大括号中的 JS。
<p>
Time : {new Date(link.enteredAt).toLocaleTimeString(undefined, {
hour: '2-digit',
minute: '2-digit'
})}</p>