トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   どこでもFlash【携帯向けFlash関連】
     経過日数計算のActionScript
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
momiji
Åê¹ÆNo.19546
投稿日時: 2005-8-20 19:05
新米
居住地:
投稿: 3
使用環境:
WindowsXP,FlashMX2004
経過日数計算のActionScript
指定日からの経過日数を計算したいと考えています。

世界標準時の1970年1月1日午前0時からのミリ秒を取得できる
───────────────────────────────────────
getTime()
───────────────────────────────────────

はFlashPlayer5以降の対応のもののため、FlashLite1.1では使えないようなので
どのように対処すればよいものか悩んでおります。

───────────────────────────────────────
status = FSCommand2("GetLocaleShortDate","nowdate");
───────────────────────────────────────

とりあえず、以上のActionScriptで現在の年月日は取得できたのですが、
この先に進めずにいます。
経過日数を算出する良い案がありましたら教えていただけると幸いです。

なお、やりたい内容は「月の満ち欠け」の待受FLASHです。
月齢の計算方法がわからないので、新月の2005年7月6日からの経過日数を算出して
それを28で割った余りの日数から、おおよその月齢を計算しようと考えているところです。
ご教授よろしくお願いいたします。
Fla4man
Åê¹ÆNo.19547
投稿日時: 2005-8-20 20:11
職人
居住地: かまくら
投稿: 517
使用環境:
WinMe,Win2000,
Flash4,アズさん,大仏、delphi
Re: 経過日数計算のActionScript
一応月齢カレンダーなど作る予定があるので
このての計算については一言あるつもりです。

基本的に勉強不足のような気がします。
月齢計算の基準は新月ではなくて春分です。
まずはグレゴリオ暦とユリウス通日の計算方法を勉強してください。

説明やJavascriptで実施しているサイトも多いので月齢関連の資料は
結構あります。

ユリウス通日について理解ができたら2000年1月1日を基準にして
計算する形になると思います。

現在日の取得部分については今やられている方法でいいと思います


----------------
通常のハンドル名:×○○× ねた回収モードに突入 現在1/100

momiji
Åê¹ÆNo.19553
投稿日時: 2005-8-21 14:52
新米
居住地:
投稿: 3
使用環境:
WindowsXP,FlashMX2004
Re: 経過日数計算のActionScript
ご指摘ありがとうございます。
現在年月日から算出する簡易計算を利用した方法に切り替えました。
他の待受FLASHへ組み込む為の実験作成だったので、
ケイタイ端末にあまり負荷をかけないように なるべくシンプルな方法をと考えて、逆につまづいていたようです。

経過日数算出については他にいろいろ使い道がありそうなので、引き続きご指導いただけると嬉しいです。
Fla4man
Åê¹ÆNo.19629
投稿日時: 2005-8-23 22:35
職人
居住地: かまくら
投稿: 517
使用環境:
WinMe,Win2000,
Flash4,アズさん,大仏、delphi
Re: 経過日数計算のActionScript
月齢関連のサンプル(できるだけシンプルにしたもの)はBak@Flaかなんかに投稿しますが

とりあえずちょっと調べなおしたところ
GetLocaleShortDate は
imodeシミュレータで反応しなかったのと
Googleでの探索が
GetLocaleShortDate 19
GetDateDay     76
ということで
GetDateMonth、GetDateDay、GetDateYearを使う方が無難だとおもいます。
(
※MX,Flash4,5ユーザーがflasmで作る場合引数1のFscomand2は
push 'y'
push 'GetDateYear'
push '1'
FSCommand2
setVariable
の構文になります。
)

通日計算はうるうどしの100年ルールと400年ルールの計算も必要ですが

1900年3月から 2099年までという見方をすると

MJD:準ユリウス日 1858年11月17日0時(UT)JD=2400000.5日


y = FSCommand2("GetDateYear")
m = FSCommand2("GetDateMonth")
d = FSCommand2("GetDateDay")

if m <3 then (y=y-1 ;m=m+10)
else m=m-2 ;
//3月を起点とします

MJD=int(365.25 * y) + int(30.59 * m) +d - 678912 -int(y/100)+int(y/400)
1900年3月から2100年2月まで限定の場合
MJD=int(365.25 * y) + int(30.59 * m) +d - 678927
となります。
この数値は一般的天体計算をするのに使えます。

例えば2005/8/23は
int(2005*365.25) + int(30.59 *6) +23 -628927=53605
です。
普通時差については考えないでJST 9:00(UT 0:00)と考えていいと思うます。

Flash4ルールなのでint は普通に切り捨てです。(言語によっては四捨五入)

月の 朔望周期は29.53なので適当な日を起点にしてもよいと思うのですが
起点日をSとすると

Nday=int(365.25 * y) + int(30.59 * m) +d - 678927 -S
で新月からの経過日数が求められます。
月齢Nmoonは
Nmoon = Nday % 29.53
でえられます。

月計算の30.59という数字は切り捨てたときにつごうよくなる数字で深い意味はなく
配列を使って加算値を得てもよいと思います。

とりあえずこのスレでのレスはここまでとします。


----------------
通常のハンドル名:×○○× ねた回収モードに突入 現在1/100

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops