以前こちらで同じ質問をさせていただきました。
教えていただいた方にもう1度聞こうと思ったんですが
ここではそれはできないようなので、どなたか教えてください!
「HPを開設してから○ヶ月と○日が経ちました」
というような表示をしたいのです。
以前教えていただいた方法でうまく表示されていたのですが、
最近ちょっとくるってるんです。
本当は4ヶ月と22日(5/4現在)なんですが
5ヶ月と8日と表示されてしまいます。
なぜでしょうか?
いろいろ検索してまわったのですが、
どれも何日という表示方法で、○ヶ月というのは見つかりませんでした。
以前教えていただいたのは↓です。
<SCRIPT>
var StrMsg = "";
var dtToday = new Date;//現在の日付を取得する。
var StDay = new Date(2001,12,12);//Date(年,月,日)開設した年月日を入れておく。
//現在の日付から開設日付を引き何日経過したのかを取得する
if(StDay.getMonth()>=dtToday.getMonth()+1){
var strMonth = StDay.getMonth()-(dtToday.getMonth()+1);
}else{
var strMonth = (dtToday.getMonth()+1)-StDay.getMonth();
}
if(dtToday.getDate()>=StDay.getDate()){
var strDate = dtToday.getDate()-StDay.getDate();
}else{
var strDate = StDay.getDate()-dtToday.getDate();
}
//HTMLへと出力する
if(strMonth != 0){
StrMsg = StrMsg + strMonth+"ヶ月と";
}
if(Date != 0){
StrMsg = StrMsg + strDate+"日";
}
if(StrMsg.length != 0){
document.write("HPを開設してから"+ StrMsg +"が経ちました");
}</SCRIPT>
お願いします!!
No.4ベストアンサー
- 回答日時:
strDate = "約"+(strDate + 31)
の部分を
var misoka= new Date
misoka.setTime(today.getTime()-today.getDate()*24*60*60*1000)
strDate = (strDate + misoka.getDate())
にして下さい.このコードでは,
「前月最終日までの日数」+「その日から今日までの日数」
として計算します.
No.5
- 回答日時:
2001,12,12 → 2002,5,4 なら、4ヶ月と23日経ったことになると思うよ。
2001,12,12 → 2001,12,31 で19日経過。
2001,12,31 → 2002,1,1 で1日経過。ここまであわせて20日経過。
2002,1,1 → 2002,5,1 で4ヶ月経過。ここまであわせて4ヶ月と20日経過。
2002,5,1 → 2002,5,4 で3日経過。ここまであわせて4ヶ月と23日経過。
<SCRIPT>
dtToday = new Date // 現在の日付を取得する。
StDay = new Date(2001,11,12) // 開設した年,月-1,日。
xxDay = 31 // ←は、開設した、1を引いていない月の最終日を入れておく。
// 2001年12月の最終日は31日だから、31を代入した。
strMonth = (dtToday.getYear()-StDay.getYear())*12+dtToday.getMonth()-StDay.getMonth()
StrDate = dtToday.getDate()-StDay.getDate()
if(StDay.getDate()>dtToday.getDate()){
StrDate+=xxDay
strMonth--
}
//HTMLへと出力する
StrMsg = strMonth + "ヶ月"
if(StrDate != 0)StrMsg += "と" + StrDate + "日"
document.write("HPを開設してから"+ StrMsg +"が経ちました");
</SCRIPT>
5月4日現在では22日らしいんです。
でも、ありがとうございました!
いろいろな計算(?)の方法があるんですね。
勉強になりました。
ありがとうございました。
No.3
- 回答日時:
> strDate = "約"+(strDate + 31)
の部分の31が場合によって30になったり28に
なったりするようにすればいいので,
できないことはないですが,
「1ヶ月と28日経過しました.」
の28日が正確である意味はあまりないですよ.
そもそも1ヶ月の部分が1日程度の誤差があるのですから.
No.2
- 回答日時:
とりあえず,スクリプトの頭から出力部分の冒頭まで書き直してみました.
注意:
1. 開設日の「月」は,12月なら 11と書きます.
どうやら,Jan -> 0, Feb -> 1, ... という対応をしています.
2. 開設日が某月10日で今日の日付が(某+1)月5日の場合など,
経過日は25日なのか26日なのかは判定が面倒なので,
約26日という表示になるようにしてあります.
3. 一部,変数名を変更しましたので,
このスクリプトをcopy&pasteで使う場合は,
var today 以下 strMonth+=の行までを全て変更してください.
<SCRIPT>
var StrMsg = "";
var today = new Date;//現在の日付を取得する。
var openDay = new Date(2001,11,22);//Date(年,月,日)
//開設した年月日を入れておく。
//0: 1月, 1: 2月, 2: 3月, 3: 4月, 4: 5月, 5: 6月
//6: 7月, 7: 8月, 8: 9月, 9: 10月, 10: 11月, 11: 12月
var strDate = today.getDate()-openDay.getDate();
var strMonth = today.getMonth()-openDay.getMonth()
if(today.getDate()<openDay.getDate()){
strMonth = strMonth -1
strDate = "約"+(strDate + 31)
}
strMonth+= 12*( today.getYear()-openDay.getYear() )
//HTMLへと出力する
この回答への補足
回答ありがとうございます!
もうひとついいでしょうか?
「約」というのをはずすことは無理でしょうか?
ぴったり合わせるということはむずかしいのですか?
すみません、スクリプトの組み立ては
全然わからないので・・・。
無理な質問だったらごめんなさい。
お願いします。
No.1
- 回答日時:
このスクリプト,だめですよ.
ごく特定の場合は動くけれど,
根本的に書きなおさないと‥‥.
ちなみに,もとのスクリプトは,
1a.開設月の翌月なら,0ヶ月,翌々月なら1ヶ月,……とする.
1b.開設月と同じ月なら,1ヶ月,前の月なら2ヶ月とする.
2a.(月を無視した)日が開設日以後なら,今日の日-開設日の日
2b.(月を無視した)日が開設日より前なら,開設日の日-今日の日
ということをやっていますが,
1bは必要ありません.
1aは,(月を無視した)日が開設日より前なら正しいですが,後なら間違っています.
2aはこれでよい.
2bまちがってます.今日の前の月の日数(30か31か,28か)を使った計算になるはずです.
ありがとうございます!
スクリプトってむずかしいんですね。
これではダメなんですか。
私にはさっぱりわからないので、少しはわかるように勉強してみます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- JavaScript gasについて 1 2022/05/31 21:51
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript javascriptでテーブルに追加した項目のid追加してローカルストレージを操作したい 5 2023/01/01 15:52
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScriptで文字列の特定文字...
-
翌月を取得するGASが分かりません
-
C#OpenCv V4にのエラーに関する...
-
var exports = exports || {}; ...
-
GAS アンケート回答後の自動返...
-
アルファベットABCD…をスマート...
-
setTimeoutによる繰り返しが途...
-
google apps scriptの終了のさせ方
-
google map apiで下記のhtmlが...
-
googleスプレッドシートのApps ...
-
今日からnヶ月後(前)
-
ボタンを押すことでテキストエ...
-
引数なしの関数で疑問です
-
javascriptで複数キーワード検...
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
ASP.NETのコントロールの値をJa...
-
javascript修正依頼
-
第3日曜日のみの日付を取得、...
-
Javascriptで指定した位置の文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
メールフォームの日付入力フォ...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
ローカルにあるファイルを検索...
-
HTMLで作った時報アプリが動き...
-
ASP.NETのコントロールの値をJa...
-
C# 演算 奇数と偶数 表現の仕方
-
html javascript リンク先アド...
-
gas スプレッドシートがアクテ...
-
javascriptでテーブルに追加し...
-
VSCODE[Python]の設定について
-
JavaScriptで決まった「時刻」...
-
ASP.NET MVCでObjectをjsに渡す
-
イベントが初めの一回しか起き...
-
jqGridについて
おすすめ情報