0

助けてスタックオーバーフロー ケノービ、あなただけが私の希望です。

それで先週、私はこの質問をしました:

午後 4 時 30 分までカウントダウンするタイマーを作成する必要があります。これまでのところ、午後 4 時か午後 5 時までは取得できますが、その間は何分もありません。私はこれを理解することができました:

<script type="text/javascript">

var currentTime = new Date();
var hours = currentTime.getHours();
var minutes = currentTime.getMinutes();
var d = new Date();
var weekday = new Array(7);
weekday[0] = "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";

var n = weekday[d.getDay()];

var suffix = "AM";

var hoursLeft = 16 - hours;
var minsLeft = 60 - minutes;

if (minutes < 10){ 
minutes = "0" + minutes;
 }

if (hours >= 18)
{
 document.write("Same day shipping has ended for today.");
} else

if ((n === "Saturday") || (n === "Sunday"))
{
document.write("Same day shipping is not available today.");
} else {

if (hoursLeft === 0) {
    document.write(minsLeft + " minutes left to have your order shipped today!");
} else {
    if (hoursLeft === 1) {
        document.write(hoursLeft + " hour and " + minsLeft + " minutes left to have your order shipped today!");
    } else {
    if ((hoursLeft === 0) && (minsLeft <= 30)){
    document.write(minsLeft + " minute left to have your order shipped today!");
    } else {

    if (minsLeft ===1) {
    document.write (hoursLeft + " hours and " + minsLeft + " minute left to have your order shipped today!");
    } else {


if(minsLeft===60){
minsLeft=0;
hoursLeft++;
n === "Monday";
n === "Tuesday";
n === "Wednesday";
n === "Thursday";
n === "Friday";
}

document.write(hoursLeft  + " hours and " + minsLeft + " minutes left to have your order shipped today!");
}
}
}
}
}

</script>

午後 4 時 30 分までカウントダウンする時間が必要ですが、「var HoursLeft」を「16 - 時間」に設定して午後 4 時までに設定する方法しかわかりませんが、その方法がわかりません。午後4時30分までにしてください。「var minsLeft」を微調整しようと思ったのですが、「残り 2 時間と -15 分」などと言い始める奇妙なバグが発生しました。

誰にもアイデアはありますか?

幸いなことに、素晴らしい UtopiaLtd は次のように回答しました。

上記のコメンターが示唆したように、数分で計算を行ってください。時間を合計分に変換し、分がパラメータの範囲内であることを確認してください。

分を表示するには、モジュロ演算子を使用して、現在の時間の上に分数を取得します。

例えば、残り185分で「あと3時間5分」と表示したい場合、

var minutesLeft = 185;
var hours = Math.floor(minutesLeft/60);
var minStr = minutesLeft % 60;
var timeLeft = hours + " hours and " + minStr + " minutes left";

もちろん、「1 時間」などと言わないようにするために、独自のロジックを使用する必要があります。

しかし、これがキッカーです。私は自分が何をしているのかわかりません.私たちの技術担当者は去り、彼の後任は彼が始める前に辞めました. オフィスで最もオタクな男として、これは私のひざの上に落ちましたが、私は以前に JavaScript で作業したことがありません。

UtopiaLtd のソリューションを元のスクリプトにプラグインするにはどうすればよいですか? 負担になるのは嫌ですが、私はここで自分の要素から外れています。私は自分の無能さでサイトを汚染しているように感じますが、助けが必要で、私が考えることができるのはあなたたちだけです.

前もって感謝します!

4

1 に答える 1

0

オーケー、それで... 序文として、これはあまりエレガントなソリューションではありません。タイムゾーンや、時間の取り扱いに関する多数の注意事項は考慮されていません。これに役立つ何らかのプラグインを調べる必要があります。

ただし、これはその間に役立つはずです。すべての時間計算を分に変換してから、計算を行ってから、時間と分に戻しました。

var hours = currentTime.getHours();
var minutes = currentTime.getMinutes() + (hours * 60); //Convert current time to minutes
var d = new Date();
var weekday = new Array(7);
weekday[0] = "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";

var n = weekday[d.getDay()];

var suffix = "AM";

var minsLeft = (16.5 * 60) - minutes //get total minutes remaining until 16.5 (4:30 pm)
var hoursLeft = Math.floor(minsLeft / 60); //Get how many hours are in our minsLeft
var minsLeft = minsLeft % 60; //remove the hours from the minsLeft
于 2013-04-23T16:15:01.243 に答える