<?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>taichino.com &#187; as3</title>
	<atom:link href="http://taichino.com/tag/as3/feed" rel="self" type="application/rss+xml" />
	<link>http://taichino.com</link>
	<description>永遠のネバーランド</description>
	<lastBuildDate>Sat, 04 Feb 2012 13:33:04 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>仕組みとパラメータ</title>
		<link>http://taichino.com/programming/812</link>
		<comments>http://taichino.com/programming/812#comments</comments>
		<pubDate>Wed, 19 Aug 2009 20:12:29 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[as3]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=812</guid>
		<description><![CDATA[Flash Math Creativityという本が元ネタです。 以下のswfを見て下さい。円が次々と迫ってくる単純なプログラムです。これはこれで面白いわけなんですが、続きがあります。 円を作成して、フレームベースで振動や拡大しつつ、フェードアウトさせるという単純なものですが、ソースコード中の「以下パラメータ群」に注目して下さい。幾つかのパラメータがあります。振れ幅や、拡大率等、各々は簡単なパラメータなのですが、これを組み合わせて変更すると、思ったよりもダイナミックに挙動が変化します。 package &#123; import flash.display.*; import flash.events.*; import flash.geom.*; &#160; &#91;SWF&#40;width=&#34;500&#34;, height=&#34;400&#34;, backgroundColor=&#34;#FFFFFF&#34;, frameRate=&#34;15&#34;&#41;&#93; public class FrameTest extends Sprite &#123; public function w&#40;&#41; : Number &#123; return 500; &#125; public function h&#40;&#41; : Number &#123; return 400; &#125; &#160; function FrameTest&#40;&#41; &#123; addEventListener&#40;Event.ENTER_FRAME, mainLoop&#41;; &#125; public function mainLoop&#40;evt:Event&#41; : void &#123; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.co.jp/gp/product/1590594290?ie=UTF8&#038;tag=taichino-22&#038;linkCode=as2&#038;camp=247&#038;creative=7399&#038;creativeASIN=1590594290">Flash Math Creativity</a><img src="http://www.assoc-amazon.jp/e/ir?t=taichino-22&#038;l=as2&#038;o=9&#038;a=1590594290" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />という本が元ネタです。</p>
<p>以下のswfを見て下さい。円が次々と迫ってくる単純なプログラムです。これはこれで面白いわけなんですが、続きがあります。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://taichino.com/wp-content/uploads/2009/08/orig.swf" /><embed type="application/x-shockwave-flash" width="500" height="400" src="http://taichino.com/wp-content/uploads/2009/08/orig.swf"></embed></object></p>
<p><span id="more-812"></span></p>
<p>円を作成して、フレームベースで振動や拡大しつつ、フェードアウトさせるという単純なものですが、ソースコード中の「以下パラメータ群」に注目して下さい。幾つかのパラメータがあります。振れ幅や、拡大率等、各々は簡単なパラメータなのですが、これを組み合わせて変更すると、思ったよりもダイナミックに挙動が変化します。</p>

<div class="wp_syntax"><div class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.*;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.events</span><span style="color: #000066; font-weight: bold;">.*;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.geom</span><span style="color: #000066; font-weight: bold;">.*;</span>
&nbsp;
    <span style="color: #000000;">&#91;</span>SWF<span style="color: #000000;">&#40;</span><span style="color: #004993;">width</span>=<span style="color: #990000;">&quot;500&quot;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">height</span>=<span style="color: #990000;">&quot;400&quot;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">backgroundColor</span>=<span style="color: #990000;">&quot;#FFFFFF&quot;</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #004993;">frameRate</span>=<span style="color: #990000;">&quot;15&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span>
    <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> FrameTest <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> w<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span> <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">500</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #000000;">&#125;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> h<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span> <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">400</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #339966; font-weight: bold;">function</span> FrameTest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span> mainLoop<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> mainLoop<span style="color: #000000;">&#40;</span>evt<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">Math</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">random</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">*</span> <span style="color: #000000; font-weight:bold;">100</span> <span style="color: #000066; font-weight: bold;">&lt;</span> frequency<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
                <span style="color: #6699cc; font-weight: bold;">var</span> circle<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MovieClip</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">MovieClip</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                circle<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">beginFill</span><span style="color: #000000;">&#40;</span>0xFFFFFF<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                circle<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">graphics</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">drawCircle</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">21</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                circle<span style="color: #000066; font-weight: bold;">.</span>rad = <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
                circle<span style="color: #000066; font-weight: bold;">.</span>radiusX = radiusX<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                circle<span style="color: #000066; font-weight: bold;">.</span>radiusY = radiusY<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                circle<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> = w<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">/</span> <span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">;</span>
                circle<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> = h<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">/</span> <span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">;</span>
                circle<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">transform</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">colorTransform</span> = <span style="color: #004993;">color</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                <span style="color: #004993;">addChild</span><span style="color: #000000;">&#40;</span>circle<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                circle<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">addEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span> onEnterFrame<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #000000;">&#125;</span>
        <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> onEnterFrame<span style="color: #000000;">&#40;</span>evt<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Event</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #0033ff; font-weight: bold;">void</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">MovieClip</span> = <span style="color: #004993;">MovieClip</span><span style="color: #000000;">&#40;</span>evt<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">target</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">.</span>rad <span style="color: #000066; font-weight: bold;">+</span>= angleRate<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">.</span>radiusX <span style="color: #000066; font-weight: bold;">+</span>= radiusDX<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">.</span>radiusY <span style="color: #000066; font-weight: bold;">+</span>= radiusDY<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">x</span> = w<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #009966; font-style: italic;">/ 2 + target.radiusX * Math.sin(target.rad * Math.PI /</span> <span style="color: #000000; font-weight:bold;">180</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">y</span> = h<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #009966; font-style: italic;">/ 2 + target.radiusY * Math.cos(target.rad * Math.PI /</span> <span style="color: #000000; font-weight:bold;">180</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">scaleX</span> = <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">scaleY</span> <span style="color: #000066; font-weight: bold;">*</span>= scaleRate<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
            <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">alpha</span> <span style="color: #000066; font-weight: bold;">*</span>= fade<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #0033ff; font-weight: bold;">if</span> <span style="color: #000000;">&#40;</span><span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">alpha</span> <span style="color: #000066; font-weight: bold;">&lt;</span> <span style="color: #000000; font-weight:bold;">0.03</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
                <span style="color: #004993;">target</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">removeEventListener</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">Event</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">ENTER_FRAME</span><span style="color: #000066; font-weight: bold;">,</span> onEnterFrame<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
                <span style="color: #004993;">removeChild</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">target</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #000000;">&#125;</span>
        <span style="color: #000000;">&#125;</span>
&nbsp;
        <span style="color: #009900; font-style: italic;">//</span>
        <span style="color: #009900; font-style: italic;">// 以下パラメータ群</span>
        <span style="color: #009900; font-style: italic;">//</span>
&nbsp;
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> fade<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">0.95</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> <span style="color: #004993;">color</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">ColorTransform</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">ColorTransform</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0.5</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> frequency<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">20</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> scaleRate<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">1.05</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> radiusX<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> radiusY<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">0</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> radiusDX<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> radiusDY<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">1</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
        <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #339966; font-weight: bold;">function</span> angleRate<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">:</span> <span style="color: #004993;">Number</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #0033ff; font-weight: bold;">return</span> <span style="color: #000000; font-weight:bold;">30</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>パラメータを変更して、例えば少しランダム性を持たせると以下のような挙動になります。プログラムの構造は同じなのに、ここまで変化があるのが面白くてエントリにしてみました。ソースコードはあえて載せませんので、色々弄ってみると面白い発見があると思いますYO！(しつこいですが、以下のswfは上記ソースコードからパラメータのみ変更しています。)<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://taichino.com/wp-content/uploads/2009/08/custom.swf" /><embed type="application/x-shockwave-flash" width="500" height="400" src="http://taichino.com/wp-content/uploads/2009/08/custom.swf"></embed></object></pre>
<p>関数でもフレームワークでも、プログラムは上手く仕組みを作ると、後はパラメータを少し弄るだけで色んな挙動を実現する事が出来るようになりますね。最近漸く抽象化の面白さが解ってきたような気がします。あとやっぱ数学って出来るにこした事はないですね。これはsin,cosしか使ってないですけど。</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/programming/812/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pythonとperlとphpとas3とjavascriptで日時計算</title>
		<link>http://taichino.com/programming/794</link>
		<comments>http://taichino.com/programming/794#comments</comments>
		<pubDate>Mon, 10 Aug 2009 14:08:32 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[日時計算]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=794</guid>
		<description><![CDATA[各言語でスニペットのまとめエントリ第2段は日時計算です。日時データは表現方法が様々なため、必要なデータ形式にデータを変換するのが覚えれなくてイライラしますね。そこで以下の3つの表現を相互に変換するスニペットを書きました。 日時オブジェクト フォーマットされた文字列 unixタイムスタンプ(1970-01-01 00:00:00 UTC からの経過秒数) python pythonはdatetimeを使います。また日付計算はtimedeltaでオフセットを表現します。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #!/usr/bin/python # -*- coding: utf-8 -*- &#160; import time from datetime import datetime, timedelta [...]]]></description>
			<content:encoded><![CDATA[<p>各言語でスニペットのまとめエントリ第2段は日時計算です。日時データは表現方法が様々なため、必要なデータ形式にデータを変換するのが覚えれなくてイライラしますね。そこで以下の3つの表現を相互に変換するスニペットを書きました。</p>
<ul>
<li>日時オブジェクト</li>
<li>フォーマットされた文字列</li>
<li>unixタイムスタンプ(1970-01-01 00:00:00 UTC からの経過秒数)</li>
</ul>
<p><span id="more-794"></span></p>
<p><strong>python</strong><br />
pythonはdatetimeを使います。また日付計算はtimedeltaでオフセットを表現します。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
<span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">datetime</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">datetime</span>, timedelta
&nbsp;
<span style="color: #808080; font-style: italic;"># obj, text, timestamp(time)の相互変換</span>
format = <span style="color: #483d8b;">'%Y-%m-%d %H:%M:%S'</span>
orig   = <span style="color: #dc143c;">datetime</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">2009</span>, <span style="color: #ff4500;">8</span>, <span style="color: #ff4500;">10</span>, <span style="color: #ff4500;">14</span>, <span style="color: #ff4500;">53</span>, <span style="color: #ff4500;">30</span><span style="color: black;">&#41;</span>
text1  = orig.<span style="color: black;">isoformat</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">' '</span><span style="color: black;">&#41;</span>                          <span style="color: #808080; font-style: italic;"># obj  =&gt; txt</span>
date1  = <span style="color: #dc143c;">datetime</span>.<span style="color: black;">strptime</span><span style="color: black;">&#40;</span>text1, format<span style="color: black;">&#41;</span>             <span style="color: #808080; font-style: italic;"># txt  =&gt; obj</span>
time1  = <span style="color: #dc143c;">time</span>.<span style="color: black;">mktime</span><span style="color: black;">&#40;</span>date1.<span style="color: black;">timetuple</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>               <span style="color: #808080; font-style: italic;"># obj  =&gt; time</span>
date2  = <span style="color: #dc143c;">datetime</span>.<span style="color: black;">fromtimestamp</span><span style="color: black;">&#40;</span>time1<span style="color: black;">&#41;</span>                <span style="color: #808080; font-style: italic;"># time =&gt; obj</span>
time2  = <span style="color: #dc143c;">time</span>.<span style="color: black;">mktime</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">time</span>.<span style="color: black;">strptime</span><span style="color: black;">&#40;</span>text1, format<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>    <span style="color: #808080; font-style: italic;"># txt  =&gt; time</span>
text2  = <span style="color: #dc143c;">datetime</span>.<span style="color: black;">fromtimestamp</span><span style="color: black;">&#40;</span>time2<span style="color: black;">&#41;</span>.<span style="color: black;">isoformat</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">' '</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># time =&gt; txt (obj経由)</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> orig
<span style="color: #ff7700;font-weight:bold;">print</span> date2
<span style="color: #ff7700;font-weight:bold;">print</span> text2
<span style="color: #ff7700;font-weight:bold;">print</span> time2
&nbsp;
<span style="color: #808080; font-style: italic;"># 現在時刻</span>
now = <span style="color: #dc143c;">datetime</span>.<span style="color: black;">now</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> now
&nbsp;
<span style="color: #808080; font-style: italic;"># 日時計算</span>
one_hour_later    = now + timedelta<span style="color: black;">&#40;</span>hours = <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>   <span style="color: #808080; font-style: italic;"># 1時間後</span>
two_days_later    = now + timedelta<span style="color: black;">&#40;</span>days  = <span style="color: #ff4500;">2</span><span style="color: black;">&#41;</span>   <span style="color: #808080; font-style: italic;"># 2日後</span>
three_weeks_later = now + timedelta<span style="color: black;">&#40;</span>weeks = <span style="color: #ff4500;">3</span><span style="color: black;">&#41;</span>   <span style="color: #808080; font-style: italic;"># 3週間後</span>
<span style="color: #ff7700;font-weight:bold;">print</span> one_hour_later
<span style="color: #ff7700;font-weight:bold;">print</span> two_days_later
<span style="color: #ff7700;font-weight:bold;">print</span> three_weeks_later</pre></td></tr></table></div>

<p><strong>perl</strong><br />
perlはDateTimeオブジェクト。DateTimeオブジェクトはかなり強力ですが、文字列フォーマットを扱えないのが残念です。ここでは日付文字列を扱うのにDateTime::Format::Strptimeを使ってみました。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
</pre></td><td class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> warnings<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Perl6<span style="color: #339933;">::</span><span style="color: #006600;">Say</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> DateTime<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> DateTime<span style="color: #339933;">::</span><span style="color: #006600;">Format</span><span style="color: #339933;">::</span><span style="color: #006600;">Strptime</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># obj, text, timestampの相互変換</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$format</span> <span style="color: #339933;">=</span> <span style="color: #ff0000;">'%Y-%m-%d %H:%M:%S'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$parser</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DateTime<span style="color: #339933;">::</span><span style="color: #006600;">Format</span><span style="color: #339933;">::</span><span style="color: #006600;">Strptime</span><span style="color: #009900;">&#40;</span>pattern <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$format</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$orig</span>   <span style="color: #339933;">=</span> DateTime<span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span>year <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2009</span><span style="color: #339933;">,</span> month <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">8</span><span style="color: #339933;">,</span> day <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">,</span>
                           hour <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">14</span><span style="color: #339933;">,</span> minute <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">53</span><span style="color: #339933;">,</span> second <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$text1</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">$orig</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">strftime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$format</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                                 <span style="color: #666666; font-style: italic;"># obj  =&gt; txt</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$date1</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">$parser</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">parse_datetime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$text1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                          <span style="color: #666666; font-style: italic;"># txt  =&gt; obj</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$time1</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">$date1</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">epoch</span><span style="color: #339933;">;</span>                                            <span style="color: #666666; font-style: italic;"># obj  =&gt; time</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$date2</span>  <span style="color: #339933;">=</span> DateTime<span style="color: #339933;">-&gt;</span><span style="color: #006600;">from_epoch</span><span style="color: #009900;">&#40;</span>epoch <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$time1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                    <span style="color: #666666; font-style: italic;"># time =&gt; obj</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$time2</span>  <span style="color: #339933;">=</span> <span style="color: #0000ff;">$parser</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">parse_datetime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$text1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">epoch</span><span style="color: #339933;">;</span>                   <span style="color: #666666; font-style: italic;"># txt  =&gt; time (obj経由)</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$text2</span>  <span style="color: #339933;">=</span> DateTime<span style="color: #339933;">-&gt;</span><span style="color: #006600;">from_epoch</span><span style="color: #009900;">&#40;</span>epoch <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$time2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">strftime</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$format</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># time =&gt; txt  (obj経由)</span>
&nbsp;
say <span style="color: #0000ff;">$orig</span><span style="color: #339933;">;</span>
say <span style="color: #0000ff;">$date2</span><span style="color: #339933;">;</span>
say <span style="color: #0000ff;">$time2</span><span style="color: #339933;">;</span>
say <span style="color: #0000ff;">$text2</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># 現在時刻</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$now</span> <span style="color: #339933;">=</span> DateTime<span style="color: #339933;">-&gt;</span><span style="color: #006600;">now</span><span style="color: #339933;">;</span>
say <span style="color: #0000ff;">$now</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># 日時計算</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$one_hour_later</span>    <span style="color: #339933;">=</span> <span style="color: #0000ff;">$now</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">add</span><span style="color: #009900;">&#40;</span>hours <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$two_days_later</span>    <span style="color: #339933;">=</span> <span style="color: #0000ff;">$now</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">add</span><span style="color: #009900;">&#40;</span>days  <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$three_weeks_later</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">$now</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">add</span><span style="color: #009900;">&#40;</span>weeks <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
say <span style="color: #0000ff;">$one_hour_later</span><span style="color: #339933;">;</span>
say <span style="color: #0000ff;">$two_days_later</span><span style="color: #339933;">;</span>
say <span style="color: #0000ff;">$three_weeks_later</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p><strong>php</strong><br />
phpでの処理の特徴は、他の言語が中心に日付オブジェクトがあるのに対して、phpでは中心に日付文字列がある事ですね。文字列に対する各種処理が豊富にそろっています。あと関係ないですが、改行付きのprintがあればもっとすっきりするのにと思います。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/php
</span><span style="color: #339933;">&lt;</span> ?php
<span style="color: #666666; font-style: italic;"># obj, text, timestamp(time)の相互変換
</span><span style="color: #000088;">$format</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Y-m-d H:i:s'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$orig</span>  <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DateTime<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'2009-08-10 14:53:30'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$text1</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$orig</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">format</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                <span style="color: #666666; font-style: italic;"># obj  =&gt; txt
</span><span style="color: #000088;">$date1</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DateTime<span style="color: #009900;">&#40;</span><span style="color: #000088;">$text1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                  <span style="color: #666666; font-style: italic;"># txt  =&gt; obj
</span><span style="color: #000088;">$time1</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtotime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$date1</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">format</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;"># obj  =&gt; time (txt経由)
</span><span style="color: #000088;">$date2</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DateTime<span style="color: #009900;">&#40;</span><span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #339933;">,</span> <span style="color: #000088;">$time1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   <span style="color: #666666; font-style: italic;"># time =&gt; obj  (txt経由)
</span><span style="color: #990000;">list</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$y</span><span style="color: #339933;">,</span> <span style="color: #000088;">$m</span><span style="color: #339933;">,</span> <span style="color: #000088;">$d</span><span style="color: #339933;">,</span> <span style="color: #000088;">$h</span><span style="color: #339933;">,</span> <span style="color: #000088;">$mi</span><span style="color: #339933;">,</span> <span style="color: #000088;">$s</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">sscanf</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$text1</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #009933; font-weight: bold;">%d</span>-<span style="color: #009933; font-weight: bold;">%d</span>-<span style="color: #009933; font-weight: bold;">%d</span> <span style="color: #009933; font-weight: bold;">%d</span>:<span style="color: #009933; font-weight: bold;">%d</span>:<span style="color: #009933; font-weight: bold;">%d</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$time2</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mktime</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$h</span><span style="color: #339933;">,</span> <span style="color: #000088;">$mi</span><span style="color: #339933;">,</span> <span style="color: #000088;">$s</span><span style="color: #339933;">,</span> <span style="color: #000088;">$m</span><span style="color: #339933;">,</span> <span style="color: #000088;">$d</span><span style="color: #339933;">,</span> <span style="color: #000088;">$y</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>       <span style="color: #666666; font-style: italic;"># text =&gt; time
</span><span style="color: #000088;">$text2</span> <span style="color: #339933;">=</span> <span style="color: #990000;">date</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #339933;">,</span> <span style="color: #000088;">$time2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                 <span style="color: #666666; font-style: italic;"># time =&gt; text
</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$orig</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">format</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$date2</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">format</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$text2</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$time2</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># 現在時刻
</span><span style="color: #000088;">$now</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> DateTime<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$now</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">format</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># 日時計算
</span><span style="color: #000088;">$one_hour_later</span>    <span style="color: #339933;">=</span> clone <span style="color: #000088;">$now</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$one_hour_later</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">modify</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'+1 hour'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;"># '+1 hour +2 day ...'
</span><span style="color: #000088;">$two_days_later</span>    <span style="color: #339933;">=</span> clone <span style="color: #000088;">$now</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$two_days_later</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">modify</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'+2 days'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$three_weeks_later</span> <span style="color: #339933;">=</span> clone <span style="color: #000088;">$now</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$three_weeks_later</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">modify</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'+3 weeks'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$one_hour_later</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">format</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #009900;">&#41;</span>    <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$two_days_later</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">format</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #009900;">&#41;</span>    <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$three_weeks_later</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">format</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$format</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>as3</strong><br />
as3はDateオブジェクトを使用します。コンストラクタが強力でオブジェクトだろうが、文字列だろうが、タイムスタンプだろうが何でも取ります。一方で日付の計算をミリ秒単位に変換して行わないと行けないのが大変です。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.*;</span>
&nbsp;
    <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> DatetimeTest <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
        <span style="color: #339966; font-weight: bold;">function</span> DatetimeTest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #009900; font-style: italic;">// obj, text, timestamp(time)の相互変換</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> orig<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Date</span>    = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Date</span><span style="color: #000000;">&#40;</span><span style="color: #000000; font-weight:bold;">2009</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">8</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">10</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">14</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">53</span><span style="color: #000066; font-weight: bold;">,</span> <span style="color: #000000; font-weight:bold;">30</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> text1<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = orig<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>               <span style="color: #009900; font-style: italic;">// obj  =&gt; txt</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> date1<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Date</span>   = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Date</span><span style="color: #000000;">&#40;</span>text1<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>               <span style="color: #009900; font-style: italic;">// txt  =&gt; obj</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> time1<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = date1<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">getTime</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>               <span style="color: #009900; font-style: italic;">// obj  =&gt; time</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> date2<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Date</span>   = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Date</span><span style="color: #000000;">&#40;</span>time1<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>               <span style="color: #009900; font-style: italic;">// time =&gt; obj</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> time2<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Number</span> = <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Date</span><span style="color: #000000;">&#40;</span>text1<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">getTime</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>   <span style="color: #009900; font-style: italic;">// txt  =&gt; time (obj経由)</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> text2<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = <span style="color: #000000;">&#40;</span><span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Date</span><span style="color: #000000;">&#40;</span>time2<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">toString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>  <span style="color: #009900; font-style: italic;">// time =&gt; txt  (obj経由)</span>
&nbsp;
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span>orig<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span>date2<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span>text2<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span>time2<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
            <span style="color: #009900; font-style: italic;">// 現在時刻</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> now<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Date</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Date</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span>now<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
            <span style="color: #009900; font-style: italic;">// 日時計算</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> one_hour_later<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Date</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Date</span><span style="color: #000000;">&#40;</span>now<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            one_hour_later<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">setTime</span><span style="color: #000000;">&#40;</span>one_hour_later<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">getTime</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #000000; font-weight:bold;">60</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">60</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">1000</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>              <span style="color: #009900; font-style: italic;">// 1時間後</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> two_days_later<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Date</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Date</span><span style="color: #000000;">&#40;</span>now<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            two_days_later<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">setTime</span><span style="color: #000000;">&#40;</span>two_days_later<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">getTime</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #000000; font-weight:bold;">2</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">24</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">60</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">60</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">1000</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>         <span style="color: #009900; font-style: italic;">// 2日後</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> three_weeks_later<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Date</span> = <span style="color: #0033ff; font-weight: bold;">new</span> <span style="color: #004993;">Date</span><span style="color: #000000;">&#40;</span>now<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            three_weeks_later<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">setTime</span><span style="color: #000000;">&#40;</span>three_weeks_later<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">getTime</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000066; font-weight: bold;">+</span> <span style="color: #000000; font-weight:bold;">3</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">7</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">24</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">60</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">60</span><span style="color: #000066; font-weight: bold;">*</span><span style="color: #000000; font-weight:bold;">1000</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span> <span style="color: #009900; font-style: italic;">// 3週間後</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span>one_hour_later<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span>two_days_later<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span>three_weeks_later<span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
        <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p><strong>javascript</strong><br />
as3とjavascriptがこんなに似ているとは思いませんでした。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">&lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; 
          &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html&gt;
  &lt;head&gt;
    &lt;title&gt;datetime test&lt;/title&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.3.2.js&quot;&gt;&lt;/script&gt;
    <span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
      $<span style="color: #009900;">&#40;</span>
          <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
              <span style="color: #006600; font-style: italic;">// obj, text, timestampの相互変換</span>
              <span style="color: #003366; font-weight: bold;">var</span> orig  <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2009</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">8</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">10</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">14</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">53</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #003366; font-weight: bold;">var</span> text1 <span style="color: #339933;">=</span> orig.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                <span style="color: #006600; font-style: italic;">// obj  =&gt; txt</span>
              <span style="color: #003366; font-weight: bold;">var</span> date1 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span>text1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                <span style="color: #006600; font-style: italic;">// txt  =&gt; obj</span>
              <span style="color: #003366; font-weight: bold;">var</span> time1 <span style="color: #339933;">=</span> date1.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                <span style="color: #006600; font-style: italic;">// obj  =&gt; time</span>
              <span style="color: #003366; font-weight: bold;">var</span> date2 <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span>time1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                <span style="color: #006600; font-style: italic;">// time =&gt; obj</span>
              <span style="color: #003366; font-weight: bold;">var</span> time2 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span>text1<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #006600; font-style: italic;">// txt  =&gt; time (obj経由)</span>
              <span style="color: #003366; font-weight: bold;">var</span> text2 <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span>time2<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>   <span style="color: #006600; font-style: italic;">// time =&gt; txt  (obj経由)</span>
              <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>text1<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>date2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>text2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>time2<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
              <span style="color: #006600; font-style: italic;">// 現在時刻</span>
              <span style="color: #003366; font-weight: bold;">var</span> now <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>now<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
              <span style="color: #006600; font-style: italic;">// 日時計算</span>
              <span style="color: #003366; font-weight: bold;">var</span> one_hour_later <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span>now<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              one_hour_later.<span style="color: #660066;">setTime</span><span style="color: #009900;">&#40;</span>one_hour_later.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">60</span><span style="color: #339933;">*</span><span style="color: #CC0000;">60</span><span style="color: #339933;">*</span><span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>              <span style="color: #006600; font-style: italic;">// 1時間後</span>
              <span style="color: #003366; font-weight: bold;">var</span> two_days_later <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span>now<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              two_days_later.<span style="color: #660066;">setTime</span><span style="color: #009900;">&#40;</span>two_days_later.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">2</span><span style="color: #339933;">*</span><span style="color: #CC0000;">24</span><span style="color: #339933;">*</span><span style="color: #CC0000;">60</span><span style="color: #339933;">*</span><span style="color: #CC0000;">60</span><span style="color: #339933;">*</span><span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>         <span style="color: #006600; font-style: italic;">// 2日後</span>
              <span style="color: #003366; font-weight: bold;">var</span> three_weeks_later <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">new</span> Date<span style="color: #009900;">&#40;</span>now<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              three_weeks_later.<span style="color: #660066;">setTime</span><span style="color: #009900;">&#40;</span>three_weeks_later.<span style="color: #660066;">getTime</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #CC0000;">3</span><span style="color: #339933;">*</span><span style="color: #CC0000;">7</span><span style="color: #339933;">*</span><span style="color: #CC0000;">24</span><span style="color: #339933;">*</span><span style="color: #CC0000;">60</span><span style="color: #339933;">*</span><span style="color: #CC0000;">60</span><span style="color: #339933;">*</span><span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #006600; font-style: italic;">// 3週間後</span>
              <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>one_hour_later<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>two_days_later<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
              <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>three_weeks_later<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
          <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
  &lt;/head&gt;
  &lt;body&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p><strong>まとめ</strong><br />
最近pythonを使い始めて肩入れしている気はしますが，pythonが一番綺麗です。timedeltaオブジェクトがあるのが素晴しいですね。どの言語でも、変換の中心になる形式があるので、その形式を押さえる事が重要そうですね。各言語とも特に不自由はありませんが、as3とjavascriptは日時計算が若干やりにくいので、やはりクライアントサイドは基本的にビューアとして考えるのがいいのかなと思いました。飛躍しましたか。そうですか。あとphpは一々惜しい印象。幾つかシンタックスシュガーを用意したら結構使い易くなるんじゃないかと思います。</p>
<p><strong>おまけのMySQL</strong></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="sql" style="font-family:monospace;">mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">SELECT</span> NOW<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">---------------------+</span>
<span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">2009</span><span style="color: #66cc66;">-</span>08<span style="color: #66cc66;">-</span>06 <span style="color: #cc66cc;">12</span>:08:<span style="color: #cc66cc;">55</span> <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">---------------------+</span>
mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">SELECT</span> UNIX_TIMESTAMP<span style="color: #66cc66;">&#40;</span>NOW<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">-----------------------+</span>
<span style="color: #66cc66;">|</span>            <span style="color: #cc66cc;">1249528147</span> <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">-----------------------+</span>
mysql<span style="color: #66cc66;">&gt;</span> <span style="color: #993333; font-weight: bold;">SELECT</span> FROM_UNIXTIME<span style="color: #66cc66;">&#40;</span>UNIX_TIMESTAMP<span style="color: #66cc66;">&#40;</span>NOW<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">--------------------------------------+</span>
<span style="color: #66cc66;">|</span> <span style="color: #cc66cc;">2009</span><span style="color: #66cc66;">-</span>08<span style="color: #66cc66;">-</span>06 <span style="color: #cc66cc;">12</span>:09:<span style="color: #cc66cc;">31</span>                  <span style="color: #66cc66;">|</span>
<span style="color: #66cc66;">+</span><span style="color: #808080; font-style: italic;">--------------------------------------+</span></pre></td></tr></table></div>

<p>覚えにくいんですが、UNIX_TIMESTAMPとFROM_UNIXTIMEを使えると結構便利だと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/programming/794/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>pythonとperlとphpとas3とjavascriptでJSON</title>
		<link>http://taichino.com/programming/778</link>
		<comments>http://taichino.com/programming/778#comments</comments>
		<pubDate>Sun, 09 Aug 2009 01:50:39 +0000</pubDate>
		<dc:creator>taichino</dc:creator>
				<category><![CDATA[actionscript]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://taichino.com/?p=778</guid>
		<description><![CDATA[扱う言語が多くなってきて、特定の処理を思い出せずにイライラする事が頻発しています。そこで自分が使う各言語でスニペット付きでまとめる事にしました。第一弾はJSONの扱いです。連想配列をJSONにencodeして、再度decodeという基本的な流れを書きました。 python 2.6系だとJSONが標準で組み込まれてるらしいんですが、手元は2.5系なのでsimplejsonを使っています。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #!/usr/bin/python # -*- coding: utf-8 -*- import sys, codecs sys.stdout = codecs.getwriter&#40;'utf_8'&#41;&#40;sys.stdout&#41; &#160; import simplejson &#160; data = &#123; 'items':&#91; &#123;'name':'iPhone', 'price':50000&#125;, &#123;'name':'macbook', 'price':100000&#125;, &#123;'name':&#34;マクド&#34;, 'price':100&#125;, &#93;&#125; text = simplejson.dumps&#40;data&#41; # encode [...]]]></description>
			<content:encoded><![CDATA[<p>扱う言語が多くなってきて、特定の処理を思い出せずにイライラする事が頻発しています。そこで自分が使う各言語でスニペット付きでまとめる事にしました。第一弾はJSONの扱いです。連想配列をJSONにencodeして、再度decodeという基本的な流れを書きました。</p>
<p><span id="more-778"></span></p>
<p><strong>python</strong><br />
2.6系だとJSONが標準で組み込まれてるらしいんですが、手元は2.5系なので<a href="http://pypi.python.org/pypi/simplejson">simplejson</a>を使っています。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/python</span>
<span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>, <span style="color: #dc143c;">codecs</span>
<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span> = <span style="color: #dc143c;">codecs</span>.<span style="color: black;">getwriter</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'utf_8'</span><span style="color: black;">&#41;</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">stdout</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> simplejson
&nbsp;
data = <span style="color: black;">&#123;</span> <span style="color: #483d8b;">'items'</span>:<span style="color: black;">&#91;</span>
  <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span>:<span style="color: #483d8b;">'iPhone'</span>,  <span style="color: #483d8b;">'price'</span>:<span style="color: #ff4500;">50000</span><span style="color: black;">&#125;</span>,
  <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span>:<span style="color: #483d8b;">'macbook'</span>, <span style="color: #483d8b;">'price'</span>:<span style="color: #ff4500;">100000</span><span style="color: black;">&#125;</span>,
  <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span>:<span style="color: #483d8b;">&quot;マクド&quot;</span>,  <span style="color: #483d8b;">'price'</span>:<span style="color: #ff4500;">100</span><span style="color: black;">&#125;</span>,
<span style="color: black;">&#93;</span><span style="color: black;">&#125;</span>
text = simplejson.<span style="color: black;">dumps</span><span style="color: black;">&#40;</span>data<span style="color: black;">&#41;</span>  <span style="color: #808080; font-style: italic;"># encode</span>
<span style="color: #dc143c;">copy</span> = simplejson.<span style="color: black;">loads</span><span style="color: black;">&#40;</span>text<span style="color: black;">&#41;</span>  <span style="color: #808080; font-style: italic;"># decode</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;data = &quot;</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>data<span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;text = &quot;</span> + text
<span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;copy = &quot;</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">copy</span><span style="color: black;">&#41;</span>
<span style="color: #ff7700;font-weight:bold;">for</span> item <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #dc143c;">copy</span><span style="color: black;">&#91;</span><span style="color: #483d8b;">'items'</span><span style="color: black;">&#93;</span>:
  <span style="color: #ff7700;font-weight:bold;">print</span> item<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;name&quot;</span><span style="color: black;">&#93;</span></pre></td></tr></table></div>

<p><strong>perl</strong><br />
perlはJSON.pm。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
</pre></td><td class="code"><pre class="perl" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/perl</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> strict<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> warnings<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> Data<span style="color: #339933;">::</span><span style="color: #006600;">Dump</span> <span style="color: #000066;">qw</span><span style="color: #009900;">&#40;</span><span style="color: #000066;">dump</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">use</span> JSON<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$data</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'items'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#91;</span>
  <span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'iPhone'</span><span style="color: #339933;">,</span>  <span style="color: #ff0000;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">50000</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
  <span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'macbook'</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">100000</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
  <span style="color: #009900;">&#123;</span><span style="color: #ff0000;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #ff0000;">'マクド'</span><span style="color: #339933;">,</span>  <span style="color: #ff0000;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>               
<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$text</span> <span style="color: #339933;">=</span> encode_json<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$copy</span> <span style="color: #339933;">=</span> decode_json<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$text</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;data = &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000066;">dump</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;text = &quot;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">$text</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">print</span> <span style="color: #ff0000;">&quot;copy = &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000066;">dump</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">$copy</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">for</span> <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$item</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">@</span><span style="color: #009900;">&#123;</span> <span style="color: #0000ff;">$copy</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">&quot;items&quot;</span><span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">print</span> <span style="color: #0000ff;">$item</span><span style="color: #339933;">-&gt;</span><span style="color: #009900;">&#123;</span><span style="color: #ff0000;">&quot;name&quot;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p><strong>php</strong><br />
phpは5.2系以降で標準でphp-jsonライブラリが組み込まれているようです。それ以前の場合はpeclで別途インストールします。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/usr/bin/php
</span><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'items'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'iPhone'</span><span style="color: #339933;">,</span>  <span style="color: #0000ff;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">50000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'macbook'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">100000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'マクド'</span><span style="color: #339933;">,</span>  <span style="color: #0000ff;">'price'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span>
  <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$copy</span> <span style="color: #339933;">=</span> <span style="color: #990000;">json_decode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$text</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">print</span> <span style="color: #000088;">$text</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$copy</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$copy</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;items&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$item</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">print</span> <span style="color: #000088;">$item</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;name&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><strong>as3</strong><br />
as3では<a href="http://code.google.com/p/as3corelib/">as3corelib</a>を使います。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
</pre></td><td class="code"><pre class="actionscript3" style="font-family:monospace;"><span style="color: #9900cc; font-weight: bold;">package</span> <span style="color: #000000;">&#123;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> <span style="color: #004993;">flash.display</span><span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">Sprite</span><span style="color: #000066; font-weight: bold;">;</span>
    <span style="color: #0033ff; font-weight: bold;">import</span> com<span style="color: #000066; font-weight: bold;">.</span>adobe<span style="color: #000066; font-weight: bold;">.</span>serialization<span style="color: #000066; font-weight: bold;">.</span>json<span style="color: #000066; font-weight: bold;">.</span>JSON<span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
    <span style="color: #0033ff; font-weight: bold;">public</span> <span style="color: #9900cc; font-weight: bold;">class</span> JsonTest <span style="color: #0033ff; font-weight: bold;">extends</span> <span style="color: #004993;">Sprite</span> <span style="color: #000000;">&#123;</span>
        <span style="color: #339966; font-weight: bold;">function</span> JsonTest<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">data</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> = <span style="color: #000000;">&#123;</span>
                items<span style="color: #000066; font-weight: bold;">:</span> <span style="color: #000000;">&#91;</span>
                    <span style="color: #000000;">&#123;</span> <span style="color: #004993;">name</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #990000;">&quot;iPhone&quot;</span><span style="color: #000066; font-weight: bold;">,</span>  price<span style="color: #000066; font-weight: bold;">:</span><span style="color: #000000; font-weight:bold;">50000</span>  <span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">,</span>
                    <span style="color: #000000;">&#123;</span> <span style="color: #004993;">name</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #990000;">&quot;macbook&quot;</span><span style="color: #000066; font-weight: bold;">,</span> price<span style="color: #000066; font-weight: bold;">:</span><span style="color: #000000; font-weight:bold;">100000</span> <span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">,</span>
                    <span style="color: #000000;">&#123;</span> <span style="color: #004993;">name</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #990000;">&quot;マクド&quot;</span><span style="color: #000066; font-weight: bold;">,</span>  price<span style="color: #000066; font-weight: bold;">:</span><span style="color: #000000; font-weight:bold;">100</span>    <span style="color: #000000;">&#125;</span>
                <span style="color: #000000;">&#93;</span>
            <span style="color: #000000;">&#125;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">text</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">String</span> = JSON<span style="color: #000066; font-weight: bold;">.</span>encode<span style="color: #000000;">&#40;</span><span style="color: #004993;">data</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #6699cc; font-weight: bold;">var</span> <span style="color: #004993;">copy</span><span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> = JSON<span style="color: #000066; font-weight: bold;">.</span><span style="color: #004993;">decode</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">text</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
&nbsp;
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">data</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">text</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span><span style="color: #004993;">copy</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #0033ff; font-weight: bold;">for</span> <span style="color: #0033ff; font-weight: bold;">each</span> <span style="color: #000000;">&#40;</span><span style="color: #6699cc; font-weight: bold;">var</span> item<span style="color: #000066; font-weight: bold;">:</span><span style="color: #004993;">Object</span> <span style="color: #0033ff; font-weight: bold;">in</span> <span style="color: #004993;">copy</span><span style="color: #000000;">&#91;</span><span style="color: #990000;">&quot;items&quot;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span> <span style="color: #000000;">&#123;</span>
                <span style="color: #004993;">log</span><span style="color: #000000;">&#40;</span>item<span style="color: #000000;">&#91;</span><span style="color: #990000;">&quot;name&quot;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #000066; font-weight: bold;">;</span>
            <span style="color: #000000;">&#125;</span>
        <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></td></tr></table></div>

<p><strong>javascript</strong><br />
javascriptは色々方法があるようですが、僕は<a href="https://github.com/douglascrockford/JSON-js">json2.js</a>を使っています。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">&lt;html&gt;
  &lt;head&gt;
    &lt;script type=&quot;text/javascript&quot; src=&quot;json2.js&quot;&gt;&lt;/script&gt;
    <span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
      <span style="color: #003366; font-weight: bold;">var</span> data <span style="color: #339933;">=</span> <span style="color: #009900;">&#123;</span> <span style="color: #3366CC;">'items'</span><span style="color: #339933;">:</span><span style="color: #009900;">&#91;</span>
        <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'name'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'iPhone'</span><span style="color: #339933;">,</span>  <span style="color: #3366CC;">'price'</span><span style="color: #339933;">:</span><span style="color: #CC0000;">50000</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'name'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'macbook'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'price'</span><span style="color: #339933;">:</span><span style="color: #CC0000;">100000</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#123;</span><span style="color: #3366CC;">'name'</span><span style="color: #339933;">:</span><span style="color: #3366CC;">'マクド'</span><span style="color: #339933;">,</span>  <span style="color: #3366CC;">'price'</span><span style="color: #339933;">:</span><span style="color: #CC0000;">100</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
      <span style="color: #009900;">&#93;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
      <span style="color: #003366; font-weight: bold;">var</span> text <span style="color: #339933;">=</span> JSON.<span style="color: #660066;">stringify</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #006600; font-style: italic;">// encode</span>
      <span style="color: #003366; font-weight: bold;">var</span> copy <span style="color: #339933;">=</span> JSON.<span style="color: #660066;">parse</span><span style="color: #009900;">&#40;</span>text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>      <span style="color: #006600; font-style: italic;">// decode</span>
&nbsp;
      <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>text<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>copy<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #000066; font-weight: bold;">in</span> copy<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;items&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>copy<span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;items&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #3366CC;">&quot;name&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
&lt;/head&gt;
&lt;/html&gt;</pre></td></tr></table></div>

<p>どの言語もほぼ同じように処理できていて、JSONは連想配列が使える言語と相性が本当にいいですね。中でもjavascriptがやっぱり一番簡単に扱えてる気がします。perlはリファレンスの扱いが面倒で、phpはarrayにシンタックスシュガーを用意したらもっと良い言語になると思いました。</p>
<p>あと、<a href="http://www.json.org/">json.org</a>の情報量が凄いので要ブックマーク！</p>
]]></content:encoded>
			<wfw:commentRss>http://taichino.com/programming/778/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

