2016-09-27 137 views
1

我正在嘗試編寫一些代碼來估算Shopify中的裝運日期。我一直在學習液體,但在Ruby中編寫一些邏輯時遇到麻煩。我不確定Shopify模板是否使用Ruby或Ruby on Rails。在Shopify中添加日期以排除週末日期

我想獲取今天的日期,並根據輸入變量添加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液體的最佳寫法?

+1

剛一說明:Shopify的液體模板,不允許執行Ruby。您需要使用Liquid中的內置過濾器或切換到使用JavaScript來實現此功能。 – coreyward

+0

謝謝你。放棄Ruby,並用JS來做。 – Alex

回答

3

在Liquid中使用date過濾器。

date format you are using in Ruby的等價於:

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

一天是86400秒。例如,從現在和格式添加三日遊:

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

注意:您需要date: "%s"過濾器應用於第一個「現在」的液體明白,你正在使用的當前時間戳,而不是字符串「現在」。

一種方法來檢查,如果訂單是在週末取得的進展將是:

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