MT覚え書き:エントリーに月齢
その日(今日)の月齢はBlogPetのフラッシュ背景で表示させてるのですが、昔のエントリー、特に釣りに行った日(エントリーを書いた日)はどんな月齢だったかなぁなんて思ったりした時、月齢カレンダーで調べたりするのもちょっと。。。
というわけで、前からやってみたかったのでやってみました。
スクリプトは「星が好きな人のための新着情報」さんの、「月齢計算(JavaScript) 」を使いました。
思いっきり調べて探したわけでなく、前に見つけたやつをさくっと埋め込んだだけなので、MT用のプラグインとかで見つけたらまた埋め直します。。。
で、エントリー用にちょこっと手を加えました。
まず、月齢用の画像を用意し、サーバにアップ。
(0.png〜29.png)
ウチは「月楼迷宮〜泡沫の蛍華〜」さんの素材を、サイズ修正しPNGに加工したものを使ってます。
で、表示させたい場所に以下を記述。
// 画像ファイルの格納ディレクトリのURLを月齢画像をアップしたディレクトリに修正。<SCRIPT LANGUAGE="JavaScript">
<!--
/***********************************************************************
月齢計算 version 2.3 for JavaScript 1.1
(C)opyright 1998 福原直人
このスクリプトは、福原直人(naohito@mb.infoweb.ne.jp)が著作権を有しています。
************************************************************************/
/*
設定項目
*/
// 画像ファイルの格納ディレクトリのURL
var imagedir = "<$MTBlogURL$>moon/";
// 画像ファイルの拡張子
var suffix = ".png";
// 画像ファイルの表示サイズ(幅)
var imageWidth = 16;
// 画像ファイルの表示サイズ(幅)
var imageHeight = 16;
/*
PNG対応ブラウザを判定
*/
function enablePNG() {
var ver = parseFloat(navigator.appVersion);
var name = navigator.appName;
var platform = navigator.platform;
var pngOK = false;
if (name == "Netscape" && ver >= 4.04) {
pngOK = true;
} else if (name == "Microsoft Internet Explorer" && ver >= 4.0) {
if (platform.charAt(0) == "W") {
pngOK = true;
}
} else if (name == "Mozilla") {
pngOK = true;
}
return pngOK;
}
/*
新月日計算
引数 julian ユリウス通日
戻り値 与えられたユリウス通日に対する直前の新月日(ユリウス日)
*/
function getNewMoon(julian) {
var k = Math.floor((julian - 2451550.09765) / 29.530589);
var t = k / 1236.85;
var nmoon = 2451550.09765
+ 29.530589 * k
+ 0.0001337 * t * t
- 0.40720 * Math.sin((201.5643 + 385.8169 * k) * 0.017453292519943)
+ 0.17241 * Math.sin((2.5534 + 29.1054 * k) * 0.017453292519943);
return (nmoon); // julian - nmoonが現在時刻の月齢
}
/*
ユリウス通日計算
引数 時刻(Dateオブジェクト)
戻り値 ユリウス通日(浮動小数点数)
*/
function getJulian(date) {
var Dt = Date.parse("<$MTEntryDate format="%m/%d/%Y %H:%M:%S"$>")/*エントリーの月齢*/
return Dt / 86400000.0+2440587.5;
}
/*
0,1,2,3 ... を 00,01,02,03 ... に。
(変な関数名だ)
*/
function maeZero(num){
if (num < 10){
return '0' + num;
} else {
return num;
}
}
/*
メイン処理
*/
var moonage;
var image;
var appName = navigator.appName.charAt(0);
var appVer = navigator.appVersion.charAt(0);
var nowDate = new Date();
julian = getJulian(nowDate);
var year = nowDate.getYear();
if(year < 2000){
year += 1900;
}
var month = nowDate.getMonth() + 1;
var day = nowDate.getDate();
var week = (new Array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'))[nowDate.getDay()];
var hour = nowDate.getHours();
var minute = nowDate.getMinutes();
var nmoon = getNewMoon(julian);
// getNewMoonは新月直前の日を与えるとうまく計算できないのでその対処
// (一日前の日付で再計算してみる)
if (nmoon > julian) {
nmoon = getNewMoon(julian - 1.0);
}
var age = julian - nmoon; // julian - nmoonが現在時刻の月齢
if(appName == "N" && appVer == "2") {
moonage = age;
} else {
moonage = new String(age);
}
// 月齢を表示用に編集(小数以下第一位まで表示)
// 画像ファイル名を編集
// でもこんな回りくどいことをしなくてもいいような気が。。。。
if (age >= 0) {
moonage = moonage + ".0"; // 小数部が0の時に備えた処理
if (moonage.charAt(0) == ".") { // 整数部が飛ばされたときの処理
moonage = "0" + moonage;
}
if(age >= 10) {
moonage = moonage.substring(0,4);
var image = imagedir + moonage.substring(0,2) + suffix;
} else {
moonage = moonage.substring(0,3);
image = imagedir + moonage.substring(0,1) + suffix;
}
if(enablePNG() == true){
document.write(' <img width="', imageWidth, '" height="', imageHeight, '" src="', image, '" title="moonage:', moonage, '" />');
}
}
//-->
</SCRIPT>
オリジナルのスクリプトは、今日を基準に月齢を表示しているので、
の部分を、return date.getTime() / 86400000.0+2440587.5;
に変えてみました。(あってるのかなぁ。。。)var Dt = Date.parse("<$MTEntryDate format="%m/%d/%Y %H:%M:%S"$>")/*エントリーの月齢*/
return Dt / 86400000.0+2440587.5;
また、表示部分の、
を、月齢画像だけを表示させたかったので、document.write(year, '-', maeZero(month), '-', maeZero(day), ' (', week, ') ');
document.write(' ', maeZero(hour), ':', maeZero(minute), ' ');
document.write('moonage: ', moonage);
if(enablePNG() == true){
document.write(' <img width="', imageWidth, '" height="', imageHeight, '" src="', image, '" alt="" />');
に変更しました。if(enablePNG() == true){
document.write(' <img width="', imageWidth, '" height="', imageHeight, '" src="', image, '" title="moonage:', moonage, '" />');
オリジナルでは、日付(今日の)、月齢数、月齢画像が表示されます。
あとはスタイルシートを修正し再構築して終了。
ウチは、タイトルのワンポイントっぽく飾ってみたのでエントリーのリストを見ると月齢の移り変わりがきれいだね。























![音を大きくする本 - 音圧をあげるための基本からプロレベルまでそのテクニックのすべて [Nowbooks3] (Stylenote Nowbooks (3)) (Stylenote Nowbooks (3))](http://ecx.images-amazon.com/images/I/41J8Ss03j6L._SL160_.jpg)












是非また、いい物や美味しい物を紹介お願いします!お肉あけましておめでとうございます。今年もよろしくお願いしますおめでとうございます。
昨年は本当にエムズパレットのホームページ・Mac(iBook)
の主治医として大変お世話になりました。
今年もやる気だけはあります。が、、最近はemuzuロイヤルホストちょっと聞きたいんですが。恥ずかしながら、これhttp://a-linker.net/mp/t15g0xyやってDT奪ってもらったんですが・・・・・・
ローションを塗りたくられて、足で2回いかされ、さらにベッドで2回(^_^;)
うみぼうずジョイフルホンダ俺の一人暮らしまとめ春から大学生で、小遣い稼ぎの為にバイト探してたけど、中々見つからなくてワロタww
この前ここのコメに書いてたサイトを半信半疑で試してみたら…
人生\(^o^)/ハジマタ日の丸お彼岸すこし俺の話を聞いてくれないか?すこし俺の話を聞いてくれ。
俺、昨日で、32になったんだけれど、先月までコンビニバイトで食いつないでいた。
だが、信じられない物を見つけてしまった。
一月前、無し@毎日が日曜日お彼岸もみじですけど・・あの、あれから連絡途絶えてるようですけど。。
やっぱり私とはダメって事ですか?
http://mobile555.zz.tc/sefure/rade0cgもみじバービーだ!先日、アシストに、エンリケさん来たみたいだね・・・仕事じゃなけりゃ、行きたかった。るちる堂:女将