我是shopnew的新手,我必须每天晚上9点显示时间计数器。逻辑包括从指定时间扣除当前时间,差异时间将显示为计数器(剩余时间)。
我可以使用下面的代码检索shopify中的当前时间戳
{% assign timestamp = 'now' | date %}
现在我有一个日期“21-03-2016 21:00:00”,并希望转换时间戳但无法获得解决方案。
让我知道是否有人可以帮助我。谢谢。
答案 0 :(得分:1)
请注意,该值将是页面上一次的当前时间 从模板生成,而不是在向用户展示页面时生成 如果涉及缓存或静态站点生成。
答案 1 :(得分:0)
最好使用Javascript(而非纯液体)完成此操作。通常,您希望页面对Shopify服务器具有尽可能高的可缓存性,以保持尽可能短的加载时间。
您将想要使用Liquid来补偿时区。您可以获取商店的配置时区并将其放入Javascript变量中:
var timezone = {{ 1 | date: '%z' | json }};
以上流动性语句接受一些任意输入,通过日期过滤器运行它,仅输出为该商店配置的时区组件(使用'%z'),然后通过json
过滤器运行以确保不管输出将始终是javascript-legal。
现在您知道自己的时区偏移,您可以使用所有正常的日期/时间技巧在Javascript中汇编计时器逻辑。例如:
var now = new Date();
var nowStr = now.toISOString(); // Output format: '2019-01-01T00:00'
// Chop off the time portion, then append your desired time & store timezone
var closingTimeStr = nowStr.split('T')[0] + 'T21:00' + timezone;
// We make a new date using today's date/time string
var closingTime = new Date(closingTimeStr);
// And now we can do math based on the difference
var difference_ms = closingTime - now;
if(difference_ms > 0){
// Parse the difference into hours, minutes and seconds if a positive amount of time remains. Writing a better parsing function is left as an exercise for the reader.
var hours = parseInt(difference_ms / (60 * 60 * 1000) );
difference_ms %= (60 * 60 * 1000);
var minutes = parseInt(difference_ms / (60 * 1000) );
difference_ms %= (60 * 1000);
var seconds = parseInt(difference_ms / (1000) );
console.log('Hurry down! Closing in ' + hours + ' hours, ' + minutes + ' minutes, and ' + seconds + ' seconds!');
} else {
// Show appropriate message if we're out-of-bounds
console.log('Closed for today - try again tomorrow!');
}