【问题标题】:Adding days to a date excluding weekends in Shopify在 Shopify 中将日期添加到不包括周末的日期
【发布时间】:2017-02-05 09:41:44
【问题描述】:

我正在尝试编写一些代码来估计 Shopify 中的发货日期。我一直在学习液体,但在用 Ruby 编写一些逻辑时遇到了麻烦。我不确定 Shopify 模板是使用 Ruby 还是 Ruby on Rails。

我想获取今天的日期并根据输入变量添加 3 天或 5 天,周末除外。下面是我在 PHP 中的做法:

$orderDate = date('Y-m-d');
$personalized = true;

$orderDays = ($personalized ? 4 : 2);
(date('H') > 12 ? $orderDays++ : $false);

$d = new DateTime( $orderDate );
$t = $d->getTimestamp();

// loop for X days
for($i=0; $i<$orderDays; $i++){

    // add 1 day to timestamp
    $addDay = 86400;
    // get what day it is next day
    $nextDay = date('w', ($t+$addDay));
    // if it's Saturday or Sunday get $i-1
    if($nextDay == 0 || $nextDay == 6) {
        $i--;
    }
    // modify timestamp, add 1 day
    $t = $t+$addDay;

}

$d->setTimestamp($t);
echo $d->format( 'Y-m-d' ). "\n";

为 Shopify Liquid 编写此内容的最佳方式是什么?

【问题讨论】:

  • 请注意:Shopify 的 Liquid 模板不允许您执行 Ruby。您需要使用 Liquid 中的内置过滤器或切换到使用 JavaScript 来实现此功能。
  • 谢谢。放弃了 Ruby,改用 JS。

标签: shopify liquid


【解决方案1】:

在 Liquid 中使用date 过滤器。

date format you are using in Ruby 相当于:

{{ "now" | date: "%Y, %m, %-d" }}

一天是 86400 秒。从现在开始添加 3 天并格式化的示例:

{% assign days = 3 | times: 86400 %}
{{ "now" | date: "%s" | plus: days | date: "%Y, %m, %-d" }}

注意:您需要先将date: "%s" 过滤器应用于“now”,以便 Liquid 了解您使用的是当前时间戳,而不是字符串“now”。

检查是否在周末下订单的一种方法是:

{% assign wday = order.created_at | date: "%a" %}
{% if wday == 'Sat' or wday == 'Sun' %}
    el Weekendo
{% endif %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多