Shopify时差

时间:2016-03-21 15:33:06

标签: time shopify difference

我是shopnew的新手,我必须每天晚上9点显示时间计数器。逻辑包括从指定时间扣除当前时间,差异时间将显示为计数器(剩余时间)。

我可以使用下面的代码检索shopify中的当前时间戳

{% assign timestamp = 'now' | date %}

现在我有一个日期“21-03-2016 21:00:00”,并希望转换时间戳但无法获得解决方案。

让我知道是否有人可以帮助我。谢谢。

2 个答案:

答案 0 :(得分:1)

  

请注意,该值将是页面上一次的当前时间   从模板生成,而不是在向用户展示页面时生成   如果涉及缓存或静态站点生成。

http://shopify.github.io/liquid/filters/date/

答案 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!');
}