Javascript Shopify预计交付量

Javascript Shopify预计交付量,javascript,shopify,liquid,Javascript,Shopify,Liquid,我期待在产品页面上显示每个交付选项的预计交付日期。我已经通读了斯蒂芬·夏普的代码,该代码将非常有效,除非我们需要将其固定到当天下午3点,然后在下午3点后切换到下一个工作日。(基本上取消了客户选择发货日期的选项。) 我无法通过将这段代码分解到我们的模板中来实现它。这是我一起杀戮的东西,看起来效果不错,但我不想让周一、周二、周三……我想把它们设定为未来的日期。有什么建议吗 编辑:我还听说Palec也在使用计时器代码。所以我会把它加进去 <script language="JavaScript"

我期待在产品页面上显示每个交付选项的预计交付日期。我已经通读了斯蒂芬·夏普的代码,该代码将非常有效,除非我们需要将其固定到当天下午3点,然后在下午3点后切换到下一个工作日。(基本上取消了客户选择发货日期的选项。)

我无法通过将这段代码分解到我们的模板中来实现它。这是我一起杀戮的东西,看起来效果不错,但我不想让周一、周二、周三……我想把它们设定为未来的日期。有什么建议吗

编辑:我还听说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>

功能日(a){
变量日期=新日期();
变量天数=[“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”];
var today=date.getDay();
如果(今天==1)今天=0;//星期一
如果(今天==2)今天=1;//星期二
如果(今天==3)今天=2;//星期三
如果(今天==4)今天=4;//星期四
如果(今天==5)今天=5;//星期五
如果(今天==6)今天=-1;//星期六移到星期一
如果(今天==0)今天=-1;//星期天移到星期一
h=date.getHours();
if(h15)today++;
预期风险值=今天+a;
var main=天数[预计];
文件。编写(‘标准交付估算:’);
文件。编写(主);
}
第(1)天

我会尝试以下方法:

功能日(a){
变量日期=新日期();
var hours=date.getHours();
//如果在下午3点之后,则添加1天
如果(小时数>15)a++;
var expectedDeliveryDate=添加工作日(日期,a);
document.write(expectedDeliveryDate.toDateString()+“带标准传递”);
}
函数addWeekdays(fromDate,days){
var计数=0;
同时(计数<天){
fromDate.setDate(fromDate.getDate()+1);
如果(fromDate.getDay()!=0&&fromDate.getDay()!=6)//跳过周末
计数++;
}
从日期返回;
}
addWeekdays
函数中的代码来自堆栈溢出。)

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


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

这是我最后的代码,基于的答案

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;
}
功能日(a){
变量日期=新日期();
var hours=date.getHours();
//如果在下午3点之后,则添加1天
如果(小时>=15)a++;
var expectedDeliveryDate=添加工作日(日期,a);
document.write(expectedDeliveryDate.toDateString()+“带标准传递”);
}
函数addWeekdays(fromDate,days){
var计数=0;
同时(计数<天){
fromDate.setDate(fromDate.getDate()+1);
如果(fromDate.getDay()!=0&&fromDate.getDay()!=6)//跳过周末
计数++;
}
从日期返回;
}
还添加了计时器:

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);
}
函数ShowTime(){
var now=新日期();
var hrs=15-now.getHours();
如果(小时<0)小时+=24;
var mins=60-now.getMinutes();
var secs=60-now.getSeconds();
timeLeft=“”+小时+小时+分钟+分钟+秒+秒”;
$(“#倒计时”).html(timeLeft);
}
var倒计时=设置间隔(显示时间,1000);
函数StopTime(){
清除间隔(倒计时);
}

我尝试将上一个问题中的代码合并到模板中,但没有任何效果,但我可以处理。我所解释的能做到吗。。。是否可以删除径向按钮只显示日期并使用静态日期作为今天的日期,该日期将更改为下午3点后的第二天。如果可以的话,我将在以后发布我所输入的内容和位置?只需编辑您的问题并添加您到目前为止获得的代码。此外,问题不是关于“计时器”的你只需复制并粘贴@steph sharp的答案,几乎没有变化。这更多的是对她的答案的评论,而不是答案本身。我展示了我使用的最终代码(这是我的问题,毕竟我是OP),我想展示我最终使用的代码。我编辑了Steph的内容,但完全回答了显示“预计”交付日期格式的问题。我感谢斯蒂芬帮助我得出结论。计时器是对所用代码的补充。它添加了一个计时器来显示距离更改发生的时间,我为其他可能想将此添加到代码中的人发布了此消息。@Palec,我以后会记住这一点。我只是觉得每个人都能看到我是发布问题和帖子的人。我并没有因为我只是想展示我最终使用了什么代码而得到任何赞扬,因为我觉得在shopify商店中使用(应该内置)这是一个很好的功能。谢谢大家。@Liam刚刚编辑了您的答案以改进格式并修复了代码的两个问题(
StopTime
最初不起作用,
day
包含未使用的代码)。现在我意识到你的代码和斯蒂芬·夏普的完全一样。我认为你应该把附录和计时器移到问题上,删除你的答案,因为它实际上没有给你的要求增加任何新内容。(没人要计时器。)@palec别再敲了是吗?代码对我来说很有效。计时器是任何想要加入它的人的额外奖励。计时器不是问题的一部分,因为我没有被计时器卡住