【问题标题】:Shopify estimated deliveryShopify 预计交货
【发布时间】:2014-08-06 15:59:49
【问题描述】:

我希望在产品页面上显示我们拥有的每个交付选项的预计交付日期。我已经通读了 Steph Sharp 在Shopify Variants 中的代码,这将非常有效,除非我们需要将它固定到当天直到下午 3 点,然后在下午 3 点之后切换到下一个工作日。 (基本上取消了客户选择发货日期的选项。)

我无法通过将这段代码植入我们的模板来让它工作。这就是我一起屠宰的东西,它似乎工作得很好,但不是有 MON,TUE,WED,......我想将它们设置为未来的日期。有什么建议吗?

编辑:我还听说 Palec 也在使用带有此代码的计时器代码。所以我会把它添加进去。

<script language="JavaScript">
function day(a) {
    var date = new Date();

    var days = ["Mon","Tue","Wed","Thur","Fri","Mon","Tue","Wed","Thur","Fri","Mon","Tue","Wed","Thur","Fri"];

    var today = date.getDay();

    if (today == 1) today = 0; //Monday
    if (today == 2) today = 1; //Tuesday
    if (today == 3) today = 2; //Wednesday
    if (today == 4) today = 4; //Thursday
    if (today == 5) today = 5; //Friday
    if (today == 6) today = -1; //Saturday Moved To Monday
    if (today == 0) today = -1; //Sunday Moved To Monday

    h = date.getHours();
    if (h <= 9) h = "0" + h;
    time = h;

    if (time > 15) today++;

    var expected = today + a;

    var main = days[expected];

    document.write('STANDARD DELIVERY ESTIMATE:  ');
    document.write(main);
}
</script>

<body>
<script language="JavaScript">
day(1)
</script>

【问题讨论】:

  • 我试图将上一个问题中的代码合并到模板中,但无济于事,但我可以解决这个问题。我正在解释的内容是否可以完成...是否可以删除径向按钮仅显示日期并使用今天的静态日期,该日期更改为下午 3 点后的第二天。
  • 我会发布我放入的内容,如果可以的话稍后会在哪里发布?
  • 只需编辑您的问题并添加您目前获得的代码。

标签: javascript shopify liquid


【解决方案1】:

我会尝试这样的事情:

function day(a) {
    var date = new Date();
    var hours = date.getHours();

    // If after 3pm, add 1 day
    if(hours > 15) a++;

    var expectedDeliveryDate = addWeekdays(date, a);
    document.write(expectedDeliveryDate.toDateString() + ' with Standard Delivery');
}

function addWeekdays(fromDate, days) {
    var count = 0;
    while (count < days) {
        fromDate.setDate(fromDate.getDate() + 1);
        if (fromDate.getDay() != 0 && fromDate.getDay() != 6) // Skip weekends
            count++;
    }
    return fromDate;
}

addWeekdays 函数中的代码来自 Stack Overflow 上的this answer。)

此代码仅显示日期名称(如您问题中的代码),但您可以根据需要格式化expectedDeliveryDate

编辑:我更新了我的代码以使用 cmets 中指定的 expectedDeliveryDate.toDateString()。请注意,您不再需要 days 数组或 expectedDeliveryDay 变量。 (您仍然可以在 your answer 中找到它们,但它们没有被使用。)

【讨论】:

    【解决方案2】:

    这是我的最终代码,基于Steph Sharp 的回答。

    function day(a) {
        var date = new Date();
        var hours = date.getHours();
    
        // If after 3pm, add 1 day
        if (hours >= 15) a++;
    
        var expectedDeliveryDate = addWeekdays(date, a);
        document.write(expectedDeliveryDate.toDateString() + ' with Standard Delivery');
    }
    
    function addWeekdays(fromDate, days) {
        var count = 0;
        while (count < days) {
            fromDate.setDate(fromDate.getDate() + 1);
            if (fromDate.getDay() != 0 && fromDate.getDay() != 6) // Skip weekends
                count++;
        }
        return fromDate;
    }
    

    还添加了一个计时器:

    function ShowTime() {
        var now = new Date();
        var hrs = 15 - now.getHours();
        if (hrs < 0) hrs += 24;
        var mins = 60 - now.getMinutes();
        var secs = 60 - now.getSeconds();
        timeLeft = "" + hrs + ' hours ' + mins + ' minutes ' + secs + ' seconds';
        $("#countdown").html(timeLeft);
    }
    
    var countdown = setInterval(ShowTime, 1000);
    function StopTime() {
        clearInterval(countdown);
    }
    

    【讨论】:

    • 此外,问题不在于“计时器”,您只需复制并粘贴@steph-sharp 的答案,几乎没有更改。这更像是对她的答案的评论,而不是答案本身。
    • 我展示了我使用的最终代码(毕竟我是 OP,这是我的问题),我想展示我最终使用的代码。我已经编辑了斯蒂芬的内容,但要完全回答显示按要求格式化的“估计”交货日期的问题。我感谢斯蒂芬参与帮助我得出结论。计时器是对使用的相同代码的补充。它添加了一个计时器来显示更改将发生多长时间,我将其发布给其他可能想要将其添加到他们的代码中的人。
    • @Palec,我以后会记得的。我只是认为每个人都可以看到我是发布问题和帖子的人。我没有对我只是想展示我最终使用的代码的代码有任何功劳,因为我觉得在 shopify 商店中拥有(应该真正内置)是一个很好的功能。谢谢大家。
    • @Liam 刚刚编辑了您的答案以改进格式并修复代码的两个问题(StopTime 最初不起作用,day 包含未使用的代码)。现在我意识到您的代码与 Steph Sharp 的代码完全相同。我认为您应该将带有计时器的附录移至问题并删除您的答案,因为它确实没有为您的要求增加任何新内容。 (没有要求计时器。)
    • @palec 停止敲打是吗?该代码对我来说很好。对于任何想要包含它的人来说,计时器是一个额外的好处。计时器不是问题的一部分,因为我没有被计时器困住。 ;)
    猜你喜欢
    • 2022-07-10
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    相关资源
    最近更新 更多