メイン とにかくFLASH【FLASHに関して全般】 日付の加算について質問です | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
natoshin | Åê¹ÆNo.24995 投稿日時: 2006-4-20 15:45 |
新米 居住地: 新宿 投稿: 20
使用環境:
windowsXP, Flash MX 2004 pro, ColdFusion MX, Dreamweaber MX 2004, Mozilla FireFox, IE |
日付の加算について質問です いつもお世話になっております。
natoshinです。 ある日付(YYYYMMDDhhmmss形式)の数時間後の 日付(YYYYMMDDhhmmss形式)を算出したいのですが 上手くいきません。 なんぞいい方法はないもんでしょうか? |
野中文雄 | Åê¹ÆNo.24996 投稿日時: 2006-4-20 15:57 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 日付の加算について質問です 本題に入る前に、「エクセルファイルのダウンロードについて」は解決したのでしょうか?
ご質問につきましては、「上手くいきません」はご説明になりません。どういう意図で、どのような処理をして、どういった結果になったのでしょうか? 引用: natoshinさんは書きました: |
natoshin | Åê¹ÆNo.25000 投稿日時: 2006-4-20 17:47 |
新米 居住地: 新宿 投稿: 20
使用環境:
windowsXP, Flash MX 2004 pro, ColdFusion MX, Dreamweaber MX 2004, Mozilla FireFox, IE |
Re: 日付の加算について質問です 説明の方、ご指摘の通り不十分ですいませんでした。
詳細といたしましては ある処理の開始日付(YYYYMMDDhhmmss形式)と予想処理時間を DBより取得して、その予想終了日付(YYYYMMDDhhmmss形式)を 取得するといった処理があるのですが、上手く日付が 加算されません。 以下、当該プログラム部分です。 // 直前の処理開始日付・時間および終了日付・時間を「YYYY/MM/DD/hh/mm/ss」のフォーマットへ変換し、変数に格納 procLastStrDateTime = lStrYear + "/" + lStrMonth + "/" + lStrDay + "/ " + lStrHour + "/ " + lStrMinute; procLastEndDateTime = lEndYear + "/" + lEndMonth + "/" + lEndDay + "/" + lEndHour + "/ " + lEndMinute; // 日付型に変換し、変数に格納 procLastStrDateTime = makeDateTime(procLastStrDateTime); procLastEndDateTime = makeDateTime(procLastEndDateTime); // 「終了時間 - 開始時間」で処理時間を算出し、変数に格納 diffDateTime = procLastEndDateTime.getTime() - procLastStrDateTime.getTime(); // 1件あたりの処理時間を計算 // ※lCnt:DBより取得した処理対象件数 perTime = Math.round(diffDateTime / lCnt); // 予想終了時間を算出 forcastProcTime = perTime * nCnt; // 「最新の処理開始日付・時間 + 予想処理時間」で予想処理終了日付・時間を算出 procStrDateTime = nStrYear + "/" + nStrMonth + "/" + nStrDay + "/ " + nStrHour + "/ " + nStrMinute; procStrDateTime = makeDateTime(procStrDateTime); procStrDateTime = procStrDateTime.getTime(); forcastEndDateTime = procStrDateTime + forcastProcTime; forcastEndDateTime = new Date(forcastEndDateTime); function makeDateTime(procDateTime) { // 文字列を日付に変換 var tmp = procDateTime.split("/"); return new Date(tmp[0], tmp[1], tmp[2], tmp[3], tmp[4]); } 再度、宜しくお願い致します。 なお、「エクセルファイルのダウンロード」につきましては 結局、解決しなかったため他の方法をとりました (WEB上で動的に作成せず、バッチであらかじめ作成し、 作成したファイルにリンクを貼りダウンロードするという 静的なやり方をとりました)。 |
野中文雄 | Åê¹ÆNo.25004 投稿日時: 2006-4-20 18:52 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 日付の加算について質問です お答えになっていません。
具体的に(1)どういう値を使って、(2)どういう処理結果が得られるべきところ、(3)どのような意図しない結果になるのでしょうか? たとえば、(3)については何も起こらない(値が返らない)、undefinedあるいはNaNが返る、エラーが発生する、まったく違う値になるなどが考えられます。それらの具体的な現象に照らして、値が渡されているのか、正しく処理が流れているのか、関数は呼ばれているのか、計算や処理のステートメントに誤りはないのかを、個別に検討する必要があります。 引用: natoshinさんは書きました: 上述のような検討を行うためには、適切に問題の切分けと絞込みがされていなければなりません。引用のスクリプトは、少なくとも以下の程度まで絞込めるはずです。
あとから検索されるメンバーのためにも、スレッドに回答をお寄せください。→【フィードバックをしない】 引用: なお、「エクセルファイルのダウンロード」につきましては |
natoshin | Åê¹ÆNo.25031 投稿日時: 2006-4-21 13:16 |
新米 居住地: 新宿 投稿: 20
使用環境:
windowsXP, Flash MX 2004 pro, ColdFusion MX, Dreamweaber MX 2004, Mozilla FireFox, IE |
Re: 日付の加算について質問です 度々、本当にスイマセン。
具体的には 下記のようにプログラムを書いていて ミリ秒で値を算出した時に「YYYYMMDDhhmmss」フォーマットへの 変換の仕方が分からないということです。 // 日付文字列を日付型に変換し、変数に格納 procLastStrDateTime = makeDateTime("2006/04/18/09/00/00"); // 直前処理の処理開始時間 procLastEndDateTime = makeDateTime("2006/04/18/21/00/00"); // 直前処理の処理終了時間 trace("procLastStrDateTime:" + procLastStrDateTime); // 結果値 - Thu May 18 09:00:00 GMT+0900 2006 trace("procLastEndDateTime:" + procLastEndDateTime); // 結果値 - Thu May 18 21:00:00 GMT+0900 2006 // 直前処理の「終了時間 - 開始時間」で経過した処理時間を算出し、変数に格納 diffDateTime = procLastEndDateTime.getTime() - procLastStrDateTime.getTime(); trace("diffDateTime:" + diffDateTime); // 結果値 - 43200000 // 直前処理の1件あたり処理時間を計算 lCnt = 1; // 1と仮定する perTime = Math.round(diffDateTime / lCnt); trace("perTime:" + perTime); // 結果値 - 1542857 // 予想処理時間を算出 // 直前処理の1件あたり処理時間 x 最新の処理対象総件数 = 予想処理時間 nCnt = 2; // 2と仮定する forcastProcTime = perTime * nCnt; trace("forcastProcTime:" + forcastProcTime); // 結果値 - 3085714 // 「最新の処理開始日付・時間 + 予想処理時間」で予想処理終了日付・時間を算出 procStrDateTime = makeDateTime("2006/04/19/10/00/00"); procStrDateTime = makeDateTime(procStrDateTime); procStrDateTime = procStrDateTime.getTime(); trace("procStrDateTime:" + procStrDateTime); // 結果値 - 1145587341234 forcastEndDateTime = procStrDateTime + forcastProcTime; trace("forcastEndDateTime:" + forcastEndDateTime); // 結果値 - 1145590426948 // ミリ秒算出値(forcastEndDateTime - 1145590426948)を「YYYYMMDDhhmmss」に // フォーマット整形したいのですが、どうしてもやり方がわかりません。結果値としては「2006/04/20/10/00/00(又は20060420100000)」の値が取得したいです。 function makeDateTime(procDateTime) { // 文字列を日付に変換 var tmp = procDateTime.split("/"); return new Date(tmp[0], tmp[1], tmp[2], tmp[3], tmp[4]); } 以上、度々申し訳ございませんが、 ご返答のほど、宜しくお願い致します。 |
natoshin | Åê¹ÆNo.25032 投稿日時: 2006-4-21 13:18 |
新米 居住地: 新宿 投稿: 20
使用環境:
windowsXP, Flash MX 2004 pro, ColdFusion MX, Dreamweaber MX 2004, Mozilla FireFox, IE |
Re: 日付の加算について質問です 度々、本当にスイマセン。
具体的には 下記のようにプログラムを書いていて ミリ秒で値を算出した時に「YYYYMMDDhhmmss」フォーマットへの 変換の仕方が分からないということです。 // 日付文字列を日付型に変換し、変数に格納 procLastStrDateTime = makeDateTime("2006/04/18/09/00/00"); // 直前処理の処理開始時間 procLastEndDateTime = makeDateTime("2006/04/18/21/00/00"); // 直前処理の処理終了時間 trace("procLastStrDateTime:" + procLastStrDateTime); // 結果値 - Thu May 18 09:00:00 GMT+0900 2006 trace("procLastEndDateTime:" + procLastEndDateTime); // 結果値 - Thu May 18 21:00:00 GMT+0900 2006 // 直前処理の「終了時間 - 開始時間」で経過した処理時間を算出し、変数に格納 diffDateTime = procLastEndDateTime.getTime() - procLastStrDateTime.getTime(); trace("diffDateTime:" + diffDateTime); // 結果値 - 43200000 // 直前処理の1件あたり処理時間を計算 lCnt = 1; // 1と仮定する perTime = Math.round(diffDateTime / lCnt); trace("perTime:" + perTime); // 結果値 - 1542857 // 予想処理時間を算出 // 直前処理の1件あたり処理時間 x 最新の処理対象総件数 = 予想処理時間 nCnt = 2; // 2と仮定する forcastProcTime = perTime * nCnt; trace("forcastProcTime:" + forcastProcTime); // 結果値 - 3085714 // 「最新の処理開始日付・時間 + 予想処理時間」で予想処理終了日付・時間を算出 procStrDateTime = makeDateTime("2006/04/19/10/00/00"); procStrDateTime = makeDateTime(procStrDateTime); procStrDateTime = procStrDateTime.getTime(); trace("procStrDateTime:" + procStrDateTime); // 結果値 - 1145587341234 forcastEndDateTime = procStrDateTime + forcastProcTime; trace("forcastEndDateTime:" + forcastEndDateTime); // 結果値 - 1145590426948 // ミリ秒算出値(forcastEndDateTime - 1145590426948)を「YYYYMMDDhhmmss」に // フォーマット整形したいのですが、どうしてもやり方がわかりません。結果値としては「2006/04/20/10/00/00(又は20060420100000)」の値が取得したいです。 function makeDateTime(procDateTime) { // 文字列を日付に変換 var tmp = procDateTime.split("/"); return new Date(tmp[0], tmp[1], tmp[2], tmp[3], tmp[4]); } 以上、度々申し訳ございませんが、 ご返答のほど、宜しくお願い致します。 |
野中文雄 | Åê¹ÆNo.25039 投稿日時: 2006-4-21 17:57 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: 日付の加算について質問です えーと...
そうすると、以下のような数値1145590426948から、Dateインスタンスmy_dateを作成して、文字列"20060421123346"が返される関数xGetDateString()を定義できればよいということですか? だとすると、この前段階の処理はご質問のポイントとまったく関係がなく、スレッド題名の「加算」もとくに関わってこないように思われます。問題の切分け・絞込みの努力をされないと、ご自分の力でスクリプトを書くことが難しくなりますよ。
引用: natoshinさんは書きました:
|
natoshin | Åê¹ÆNo.25097 投稿日時: 2006-4-24 10:26 |
新米 居住地: 新宿 投稿: 20
使用環境:
windowsXP, Flash MX 2004 pro, ColdFusion MX, Dreamweaber MX 2004, Mozilla FireFox, IE |
Re: 日付の加算について質問です ご返答およびご指摘のほど、ありがとうございます。
ご返答下さったスクリプトで望みの結果値が 取得できました。 確かにおっしゃるとおり、「加算」は特に 問題となる部分ではないですよね。すいませんでした。 問題の切り分けおよび絞込みに関しまして鋭意、努力 致します。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |