<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post/6459/</link>
<title><![CDATA[[时间转换]java 时间戳和PHP时间戳 的转换问题，13位毫秒获取。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Php/Js/Shell/Go]]></category>
<pubDate>Mon, 17 Jun 2013 03:34:38 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/6459/</guid> 
<description>
<![CDATA[ 
	背景：ts 参数&nbsp;&nbsp;时间戳毫秒级，13位的，我用的是PHP的，发现调用失败：<br/>以下代码有点问题：<br/><textarea name="code" class="php" rows="15" cols="100">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mtime = microtime();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mtime = explode(&quot; &quot;, $mtime);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$mtime = ($mtime[1] ) . intval(($mtime[0] *1000));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo $mtime;
</textarea><br/>当mtime[0]是0.012 =&gt;&gt; 给*1000后小数后面的第一个零给去掉了，形成了12位的，不到13位，于是rango给出一个：<br/><textarea name="code" class="php" rows="15" cols="100">
&nbsp;&nbsp;&nbsp;&nbsp;$rango = round(microtime(true), 3) * 1000;
&nbsp;&nbsp;&nbsp;&nbsp;echo &quot;&#92;nrango = &quot;.$rango.&quot;&#92;n&quot;;
</textarea><br/>估计是后面的是00，所以没显示<br/>比如：第一个其实是：1372057395.0100<br/>后面两个0没显示，则会显示：1372057395.01，12位。<br/><textarea name="code" class="java" rows="15" cols="100">
JAVA时间戳长度是13位，如：1294890876859
SimpleDateFormat df = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;);
String dateTime = df.format(1294890859000L);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
System.out.println(df);
</textarea><br/><br/>PHP时间戳长度是10位， 如：1294890859<br/>而PHP的microtime()得出的是：<br/>10位的Unix时间(秒)<br/>8位的微妙<br/>足够你用了.截取自己要的13位就可以了.<br/><br/>这里可能涉及到java 时间戳和PHP时间戳 的转换问题：<br/>java时间戳和PHP时间戳 的转换问题：<br/>由于精度不同，导致长度不一致，直接转换错误。<br/>JAVA时间戳长度是13位，如：1294890876859<br/>PHP时间戳长度是10位， 如：1294890859<br/><br/>主要最后三位的不同，JAVA时间戳在PHP中使用，去掉后三位，如：1294890876859-&gt; 1294890876 结果:2011-01-13 11:54:36<br/><br/>echo date(&#039;Y-m-d H:i:s&#039;,&#039;1294890876&#039;);<br/><br/><br/>PHP时间戳在JAVA中使用，最后加三位，用000补充,如：1294890859-&gt;1294890859000<br/>结果:2011-01-13 11:54:19<br/>SimpleDateFormat df = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;);<br/>String dateTime = df.format(1294890859000L);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>System.out.println(df);<br/><br/>来自：http://fghzhaopai.blog.163.com/blog/static/4780555620114137146287/<br/>======================================================<br/>Js实现：<br/><textarea name="code" class="php" rows="15" cols="100">
function getLocalTime(a)
&#123; 
&nbsp;&nbsp; return new Date(parseInt(a)*1000).toLocaleString() 
&#125; 
</textarea><br/>10位的时间戳 转 脚本里乘1000 要么你直接后面加3个000 变成13位的 ，<br/>估计也差不多 算成时间 秒位最小单位 基本没什么误差了<br/><br/>1s=1000ms(毫秒)=1000000(微秒)<br/>1s=10^3ms(毫秒)=10^6μs(微秒)<br/><br/><br/>IOS的&nbsp;&nbsp;typedef long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__darwin_time_t;&nbsp;&nbsp;/* time() */<br/>time返回就是 long<br/>不存在小数情况你这个IOS返回的是毫秒还是微秒？了解下。<br/>是秒<br/>那怎么获取到毫秒啊？<br/>乘1000<br/>取到的秒 是&nbsp;&nbsp;10位的
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/6459/#blogcomment63913</link>
<title><![CDATA[[评论] [时间转换]java 时间戳和PHP时间戳 的转换问题，13位毫秒获取。]]></title> 
<author>小浩 &lt;1689818364@qq.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 15 Sep 2013 12:20:55 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/6459/#blogcomment63913</guid> 
<description>
<![CDATA[ 
	楼主你真棒，学习了~！
]]>
</description>
</item>
</channel>
</rss>