在Shopify中将日期添加到不包括周末的日期

Ale*_*lex 2 liquid shopify

我正在尝试编写一些代码来估算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";
Run Code Online (Sandbox Code Playgroud)

什么是为Shopify液体写这个的最好方法?

jrb*_*ard 7

使用dateLiquid中的过滤器.

您在Ruby中使用日期格式相当于:

{{ "now" | date: "%Y, %m, %-d" }}
Run Code Online (Sandbox Code Playgroud)

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

{% assign days = 3 | times: 86400 %}
{{ "now" | date: "%s" | plus: days | date: "%Y, %m, %-d" }}
Run Code Online (Sandbox Code Playgroud)

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

检查订单是否在周末进行的方法是:

{% assign wday = order.created_at | date: "%a" %}
{% if wday == 'Sat' or wday == 'Sun' %}
    el Weekendo
{% endif %}
Run Code Online (Sandbox Code Playgroud)