<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>半月記 &#187; PHP</title>
	<atom:link href="http://pasero.net/~mako/blog/s/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://pasero.net/~mako/blog</link>
	<description></description>
	<lastBuildDate>Sat, 31 Jul 2010 09:29:54 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>第何何曜日</title>
		<link>http://pasero.net/~mako/blog/s/68</link>
		<comments>http://pasero.net/~mako/blog/s/68#comments</comments>
		<pubDate>Mon, 09 Apr 2007 10:59:24 +0000</pubDate>
		<dc:creator>Mako</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[ことば]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://pasero.net/~mako/blog/s/68</guid>
		<description><![CDATA[日付を尋ねる場合に「何年何月何日」のようにあいだに別の語が挟まればいいのだが、「第何何曜日」というのは言いにくい1)。次のような事情で「第何何曜日」を求める方法を検索したく、この単語でいいのだろうかと思ったが、やはり仕方 &#8230; <a href="http://pasero.net/~mako/blog/s/68">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>日付を尋ねる場合に「何年何月何日」のようにあいだに別の語が挟まればいいのだが、「第何何曜日」というのは言いにくい<sup><a href="#footnote-1-68" id="footnote-link-1-68" title="See the footnote.">1</a>)</sup>。次のような事情で「第何何曜日」を求める方法を検索したく、この単語でいいのだろうかと思ったが、やはり仕方ないのかこのまま書いてあるのがいくつか見つかった。ともあれ意味は通じるし、そもそも未知のところを「何」に置き換えればほぼそのまま表現できる日本語は強力だ。</p>
<p>さて、その事情というのは……うちの資源ゴミの収集日は「第 2, 4 月曜日」だ。うっかり忘れてしまうことがしばしばあるので、収集日 (の前日) に自分宛にメールを飛ばそうと考えた。cron では「第何何曜日」という指定はできないので、スクリプトのほうで判定する。せっかくだからメモしておく。</p>
<h3>Y 年 m 月 d 日は、その月の第 i の w 曜日か</h3>
<p>これは検索ですぐに見つかった。曜日は、PHP なら求める手段は用意されている。</p>
<div class="igBar"><span id="lphp-3"><a href="#" onclick="javascript:showPlainTxt('php-3'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-3">
<div class="php" style="font-family: monospace;">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$i</span> = <a href="http://www.php.net/floor"><span style="color: #000066;">floor</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$d</span><span style="color: #cc66cc;color:#800000;">+6</span><span style="color: #66cc66;">&#41;</span>/<span style="color: #cc66cc;color:#800000;">7</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$w</span> = <a href="http://www.php.net/date"><span style="color: #000066;">date</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;w&quot;</span>, <a href="http://www.php.net/strtotime"><span style="color: #000066;">strtotime</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Y</span> . <span style="color: #0000ff;">$m</span> . <span style="color: #0000ff;">$d</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<h3>Y 年 m 月の第 i の w 曜日は、その月の d 日か</h3>
<p>上の逆だから簡単だと思ったが、何度か試してみてようやく</p>
<div class="igBar"><span id="lphp-4"><a href="#" onclick="javascript:showPlainTxt('php-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-4">
<div class="php" style="font-family: monospace;">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$w1</span>= <a href="http://www.php.net/date"><span style="color: #000066;">date</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;w&quot;</span>, <a href="http://www.php.net/strtotime"><span style="color: #000066;">strtotime</span></a><span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$Y</span> . <span style="color: #0000ff;">$m</span> . <span style="color: #ff0000;">&quot;01&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #0000ff;">$d</span> = <span style="color: #0000ff;">$i</span>*<span style="color: #cc66cc;color:#800000;">7</span><span style="color: #cc66cc;color:#800000;">-6</span> + <span style="color: #66cc66;">&#40;</span><span style="color: #0000ff;">$w</span>+<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;color:#800000;">7</span>-<span style="color: #0000ff;">$w1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>%<span style="color: #cc66cc;color:#800000;">7</span>;</div>
</li>
</ol>
</div>
</div>
</div>
<p>
とした。ここで $w1 は当該月の 1 日の曜日である。$d が当該月の最大日を越えない判定が必要かもしれないが、ゴミ収集日はたいていの場合 5 回目の曜日には設定されないので省略した。</p>
<p>---</p>
<p>ところでこのために <a href="http://www.php.net/manual/ja/index.php" >PHP マニュアル</a>の<a href="http://www.php.net/manual/ja/ref.datetime.php" >日付・時刻関数</a>を見ていたら、<a href="http://www.php.net/manual/ja/function.date-sunrise.php" >日の出時刻</a>や<a href="http://www.php.net/manual/ja/function.date-sunset.php" >日の入り時刻</a>を返す関数というものまであるではないか<sup><a href="#footnote-2-68" id="footnote-link-2-68" title="See the footnote.">2</a>)</sup>。</p>
<p>現代の都市生活者には日の出・日の入り時刻より、ゴミ収集日を返す関数のほうがありがたい。……と思ったら、この日の出・日の入り時刻関数は<a href="http://sourceforge.net/projects/zmanim/" >宗教上の必要から作られ</a>たらしい。別に農耕狩猟生活のためというわけではなかった。</p>
<br /><ol class="footnotes"><li id="footnote-1-68">「第何週の何曜日」というと誤解を招く。今月はたまたま 1 日 が日曜日だからいいとして、たとえば来月 (2007年5月) の「第 2 週の月曜日」は 7 日? 14日?   <a href="#footnote-link-1-68">↑</a></li><li id="footnote-2-68">残念ながらここのサーバは PHP のバージョンが 4 なので、これらを使えない。   <a href="#footnote-link-2-68">↑</a></li></ol>
	<h4>タグ</h4> <a href="http://pasero.net/~mako/blog/s/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://pasero.net/~mako/blog/s/tag/software" title="Software" rel="tag">Software</a>, <a href="http://pasero.net/~mako/blog/s/tag/%e3%81%93%e3%81%a8%e3%81%b0" title="ことば" rel="tag">ことば</a>
]]></content:encoded>
			<wfw:commentRss>http://pasero.net/~mako/blog/s/68/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
