ログイン
メインメニュー
|
投稿者 |
スレッド |
ひろゆき |
Åê¹ÆNo.45580 投稿日時: 2010-8-25 18:52 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: GMTとUTC for Twitter 唐突に、dateAarryが出てきていますが、これが何を示すのか、分かりかねます。 少なくとも、先の質問でも、指摘されていた箇所と異なる部分に問題がありました。 中途半端に省略せずに、回答者が再現できるような質問をなさってください。 ---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
hide33 |
Åê¹ÆNo.45581 投稿日時: 2010-8-25 18:56 |
半人前 居住地: 投稿: 39
使用環境: CS4 10.6
|
Re: GMTとUTC for Twitter ひろゆきさん、重ね重ねお許し下さい。 AS3のXML読み込みではうまく配列にできなかったので 下記のXPathAPIを利用してTwitterXMLを読み込んでいます。 dateArrayはTwitterXMLの投稿日時create_atを読み込んだ配列です。 もう少しでできそうです。 var dateArray:Array = XPath.selectNodes(xmlObj, "statuses/status/created_at/text()");
|
|
|
ひろゆき |
Åê¹ÆNo.45582 投稿日時: 2010-8-25 20:11 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: GMTとUTC for Twitter 相変わらず、第三者が再現できる状況にありません。 「省略せずに」と申し上げたと思いますが。 ---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
hide33 |
Åê¹ÆNo.45583 投稿日時: 2010-8-25 21:37 |
半人前 居住地: 投稿: 39
使用環境: CS4 10.6
|
Re: GMTとUTC for Twitter ひろゆきさん、ありがとうございます。 dateArray[0]はこのような日時のWed Aug 25 08:43:48 +0000 2010 Twitterから吐き出されるXMLのcreated_atタグの中身です。 var dateArray:Array = XPath.selectNodes(xmlObj, "statuses/status/created_at/text()");
今これでdataArray(日時の配列)とtextArray(本文の配列)を作成しています。 ここまではOKです。 そこで見出しの9時間のズレをAS2で変換したいと考えています。 ご教示くださった。PubDateTwitter.asを編集しています。現在のコードです。 class PubDateTwitter {
// プロパティ
private static var months:Array = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
private static var days:Array = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
private static var jdays:Array = ["日", "月", "火", "水", "木", "金", "土"];
// コンストラクタ
public function PubDateTwitter() {
}
// メソッド
public static function toDate(str:String):String {
trace(str);
//Wed Aug 25 08:43:48 +0000 2010 ここでは正常に出力されている。
var dates:Array = str.split(" ");
trace(dates[0]);
//undefineとなってしまう。
var year:Number = Number(dates[5]);
for (var m:Number = 0; m < months.length; m++) {
if (dates[1] == months[m]) {
var month:Number = m;
break;
}
}
var date:Number = Number(dates[2]);
for (var n:Number = 0; n < days.length; n++) {
if (dates[0].substr(0, 3) == days[n]) {
var day:Number = n;
break;
}
}
var time:Array = dates[3].split(":");
var hour:Number = strToNumber(time[0]);
var GMT:Number = gmtToInt(dates[4]);
var minute:Number = time[1];
//trace(minute);
var second:Number = strToNumber(time[2]);
var d:Date = new Date(year, month, date, hour+GMT, minute, second);
var dateStyle:String = d.getHours()+":"+minute+" "+(d.getMonth()+1)+"/"+d.getDate()+" "+days[d.getDay()];
return dateStyle;
}
private static function strToNumber(str:String):Number {
var n:Number;
if (str.substr(0, 1) == "0") {
n = Number(str.substr(1, 1));
} else {
n = Number(str.substr(0, 2));
}
return n;
}
private static function gmtToInt(str:String){
str = str.substr(0, 3);
var n:Number = strToNumber(str.substr(1, 2));
var gmt:Number;
if (str.substr(0, 1) == "+") {
gmt = n;
} else {
gmt = - n;
}
return gmt;
trace(gmt);
}
}
|
|
|
ひろゆき |
Åê¹ÆNo.45584 投稿日時: 2010-8-25 21:42 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: GMTとUTC for Twitter 「ここまではOK」の部分に問題がないと判断できません。 むしろ、そこに問題があるような気がします。 その証拠に、フレームアクションに _root の第1フレームに var pd:String = "Wed Aug 25 08:43:48 +0000 2010";
pd.split("+0000").join("+0900");
trace(PubDateTwitter.toDate(pd));
と記述しても、エラーは出ません。 PubDateTwitter.as class PubDateTwitter {
// プロパティ
private static var months:Array = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
private static var days:Array = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
private static var jdays:Array = ["日", "月", "火", "水", "木", "金", "土"];
// コンストラクタ
public function PubDateTwitter() {
}
// メソッド
public static function toDate(str:String):String {
var dates:Array = str.split(" ");
var year:Number = Number(dates[5]);
for (var m:Number = 0; m < months.length; m++) {
if (dates[1] == months[m]) {
var month:Number = m;
break;
}
}
var date:Number = Number(dates[2]);
for (var n:Number = 0; n < days.length; n++) {
if (dates[0].substr(0, 3) == days[n]) {
var day:Number = n;
break;
}
}
var time:Array = dates[3].split(":");
var hour:Number = strToNumber(time[0]);
var GMT:Number = gmtToInt(dates[4]);
var minute:Number = time[1];
//trace(minute);
var second:Number = strToNumber(time[2]);
var d:Date = new Date(year, month, date, hour+GMT, minute, second);
var dateStyle:String = d.getHours()+":"+minute+" "+(d.getMonth()+1)+"/"+d.getDate()+" "+days[d.getDay()];
return dateStyle;
}
private static function strToNumber(str:String):Number {
var n:Number;
if (str.substr(0, 1) == "0") {
n = Number(str.substr(1, 1));
} else {
n = Number(str.substr(0, 2));
}
return n;
}
private static function gmtToInt(str:String){
str = str.substr(0, 3);
var n:Number = strToNumber(str.substr(1, 2));
var gmt:Number;
if (str.substr(0, 1) == "+") {
gmt = n;
} else {
gmt = - n;
}
return gmt;
trace(gmt);
}
}
---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
hide33 |
Åê¹ÆNo.45585 投稿日時: 2010-8-25 22:32 |
半人前 居住地: 投稿: 39
使用環境: CS4 10.6
|
Re: GMTとUTC for Twitter そうですね。ひろゆきさんのとおりにしたらエラーはでませんが、9時間が調整されずにそのままの時間が表示されました。何故でしょう? 下記コードをMsgbtn.as(クラスではなく外部ファイル)としていました。 さらにこのファイルをrootにあるムービークリップの中のタイムラインに移動しました。なのでPubDateTwitterクラスのパスがうまく通ってないようです。 このコードはまだ他にボタン制御などの関係でrootに書いていなかったのですが、何とかこれをrootに移動したら解決しそうです。 import mx.xpath.XPathAPI;
import com.xfactorstudio.xml.xpath.*;
Security.loadPolicyFile("http://assets0.twitter.com/crossdomain.xml");
Security.loadPolicyFile("http://assets1.twitter.com/crossdomain.xml");
Security.loadPolicyFile("http://assets2.twitter.com/crossdomain.xml");
Security.loadPolicyFile("http://assets3.twitter.com/crossdomain.xml");
Security.loadPolicyFile("http://assets4.twitter.com/crossdomain.xml");
//XMLファイル読込
var n:Number = Math.floor(Math.random()*1000000);
var XMLFile:String = "http://www.hogehoge.com/swf/crossdomain-proxy.php?url=http://twitter.com/statuses/user_timeline/hogehoge.xml?cache="+n;
var xmlObj:XML = new XML();
xmlObj.ignoreWhite = true;
xmlObj.load(XMLFile);
xmlObj.onLoad = function(success:Boolean):Void {
var dateArray:Array = XPath.selectNodes(xmlObj, "statuses/status/created_at/text()");
var textArray:Array = XPath.selectNodes(xmlObj, "statuses/status/text/text()");
var pd:String = dateArray[0];
pd = pd.split("+0000").join("+0900");
trace(PubDateTwitter.toDate(pd));
//初期設定
_root.date.text = PubDateTwitter.toDate(pd);
_root.title.text = textArray[0];
_root.topic.text = textArray[0];
}
ubDateTwitter.toDate(pd);がNaN:undefined NaN/NaN undefinedになるみたい。 もう少しだなぁ。
|
|
|
ひろゆき |
Åê¹ÆNo.45587 投稿日時: 2010-8-26 0:41 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: GMTとUTC for Twitter もっとシンプルに試すことができたはずですが、ここまで複雑な構造にした上で、 回答者に確認しろというのは、負担が大きすぎます。 ボタン制御などを今回の問題に絞ったもので、改めて質問し直すなどされないと、 何が問題で、どうしたら解決するのかは不明確だと思います。 ほぼ確実に言えることは、PubDateTwitter.as 側の問題ではないでしょう。 datteArray[0] 自体が、String ではないのでは? String であるべきものが、そうでなかったり、 XPath の取り扱いに問題があるように思います。 ---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
hide33 |
Åê¹ÆNo.45588 投稿日時: 2010-8-26 11:36 |
半人前 居住地: 投稿: 39
使用環境: CS4 10.6
|
Re: GMTとUTC for Twitter
|
|
|
|
|