トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     GMTとUTC for Twitter
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
hide33
Åê¹ÆNo.45538
投稿日時: 2010-8-21 11:10
半人前
居住地:
投稿: 39
使用環境:
CS4
10.6
GMTとUTC for Twitter
こんにちは。今TwitterのTLを取り込み成功しているのですが、投稿時間がGMTとUTCの関係で9時間ずれて(遅れて)います。Twitterでの設定は日本(東京)にしていますが、吐き出されるデータXMLが9時間ずれています。いろいろ検索しているのですが、解決していません。良い解決策はありませんか、ご教示下さい。

Twitter →XML→PHP→flash
var container:Sprite = new Sprite();
addChild(container);

var n:int = Math.floor(Math.random()*1000000);
var xmlURL:String = "http://www.hoge.com/swf/crossdomain-proxy.php?url=http://twitter.com/statuses/user_timeline/hogehoge.xml?cache="+n;

xmlLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, traceComplete);
xmlLoader.load(new URLRequest(xmlURL));

function traceComplete(e:Event):void
{
	
	var iXML:XML = new XML(xmlLoader.data);
	bodyArray = new Array();
	dateArray = new Array();
	
	//初期化
	for(var u:int = 1; u <= 10; u++)
	{
		if (container.numChildren >= 1) container.removeChild( container.getChildAt(t) ); 
	}
	
	
	for(var t:int = 1; t <= 10; t++)
	{
		var body:String = String(iXML.status[t-1].text);
		var date:String = String(iXML.status[t-1].created_at);
		//格納
		bodyArray.push(body);
		dateArray.push(date);
	}
	//trace(bodyArray);
	//発言生成
	body0.text = bodyArray[0];
	//投稿時間取得後ろのごちゃごちゃは丸めよ!
	date0.text = dateArray[0].substr(0,16);
}
hide33
Åê¹ÆNo.45541
投稿日時: 2010-8-21 13:49
半人前
居住地:
投稿: 39
使用環境:
CS4
10.6
Re: GMTとUTC for Twitter
文字列置換を考えましたが、日付を跨いだときに問題が発生しますね。

(例)23時だったら8時にする。Fri Aug 20 23:44:16 +0000 2010
if (dateArray[0].substr(11,2) == 23){
	var myPattern:RegExp = new RegExp("23");
	var str:String = dateArray[0];
	trace(str.replace(myPattern, "08"));
  // Fri Aug 20 08:44:16 +0000 2010
}


あと23日/23分/23秒になったらエラーがでるなぁ。
ひろゆき
Åê¹ÆNo.45542
投稿日時: 2010-8-21 14:09
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: GMTとUTC for Twitter
import utils.PubDate;

var pd:String = "Sat Aug 21 04:37:09 +0000 2010";

pd.split("+0000").join("+0900");
trace(PubDate.toDate(pd));
//2010/8/21 (土)

utils.PubDate.as
package utils {

	public class PubDate {
		// プロパティ
		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 PubDate() {
		}

		// メソッド
		public static function toDate(str:String):String {
			var dates:Array = str.split(" ");
			var year:uint = uint(dates[5]);
			for (var m:uint = 0; m < months.length; m++) {
				if (dates[1] == months[m]) {
					var month:uint = m;
					break;
				}
			}
			var date:uint = uint(dates[2]);
			for (var n:uint = 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:uint = strToUint(time[0]);
			var GMT:uint = gmtToInt(dates[4]);
			var minute:uint = strToUint(time[1]);
			var second:uint = strToUint(time[2]);
			var d:Date = new Date(year, month, date, hour+GMT, minute, second);
			var dateStyle:String = d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate()+" ("+jdays[d.getDay()]+")";
			return dateStyle;
		}
		private static function strToUint(str:String):uint {
			var n:uint;
			if (str.substr(0, 1) == "0") {
				n = uint(str.substr(1, 1));
			} else {
				n = uint(str.substr(0, 2));
			}
			return n;
		}
		private static function gmtToInt(str:String):int {
			str = str.substr(0, 3);
			var n:uint = strToUint(str.substr(1, 2));
			var gmt:int;
			if (str.substr(0, 1) == "+") {
				gmt = n;
			} else {
				gmt = - n;
			}
			return gmt;
		}

	}

}


----------------
質問する際は、回答者に具体的な情報を与えてください。

hide33
Åê¹ÆNo.45543
投稿日時: 2010-8-21 15:08
半人前
居住地:
投稿: 39
使用環境:
CS4
10.6
Re: GMTとUTC for Twitter
ひろゆきさん、丁寧に教えて戴き有り難う御座いました。
とても勉強になりました。重ねて感謝申し上げます。m( _ _ ) m
野中文雄
Åê¹ÆNo.45545
投稿日時: 2010-8-21 15:53
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: GMTとUTC for Twitter
これでもいいということですかね。
var pd:String = "Sat Aug 21 04:37:09 +0000 2010";
pd = pd.split("+0000").join("+0900");
var _date:Date = new Date(pd)
trace(_date);  // 出力: Sat Aug 21 04:37:09 GMT+0900 2010
var date_str:String = _date.fullYear + "/" + (_date.month + 1) + "/" + _date.date;
date_str += "(" + ["日", "月", "火", "水", "木", "金", "土"][_date.day] + ")";
trace(date_str);  // 出力: 2010/8/21(土)

引用:
mayorさんは書きました:
import utils.PubDate;

var pd:String = "Sat Aug 21 04:37:09 +0000 2010";

pd.split("+0000").join("+0900");
trace(PubDate.toDate(pd));
//2010/8/21 (土)


----------------
 

ひろゆき
Åê¹ÆNo.45546
投稿日時: 2010-8-21 16:19
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: GMTとUTC for Twitter
いや、時間表記もしたいのだと思うんですけど。

例に挙げたのは、日付表記をするメソッド(toDate)しか用意していなかったものです。
手抜きです。すみません。


----------------
質問する際は、回答者に具体的な情報を与えてください。

hide33
Åê¹ÆNo.45547
投稿日時: 2010-8-21 19:42
半人前
居住地:
投稿: 39
使用環境:
CS4
10.6
Re: GMTとUTC for Twitter
野中さん、ひろゆきさん
親切に有り難うございました。お二人のコードで解決しました。
時間も分まで取得しました。
hide33
Åê¹ÆNo.45576
投稿日時: 2010-8-25 17:38
半人前
居住地:
投稿: 39
使用環境:
CS4
10.6
Re: GMTとUTC for Twitter
こんにちは。先日はどうも有難う御座いました。

実はAS3では解決したんですが、その後AS2でも利用する機会が出てきまして、
下記コードの赤字のところが、タイプが一致しない旨エラーが出ています。
宜しくお願い致します。

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:String = time[1];			
		var second:Number = strToNumber(time[2]);
		
                var d:Date = new Date(year, month, date, hour+GMT, minute, second);
        var dateStyle:String = (d.getMonth()+1)+"/"+d.getDate()+d.getHours()+":"+d.getMinutes()+d.getFullYear();
		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.45578
投稿日時: 2010-8-25 17:47
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: GMTとUTC for Twitter
エラー内容は、もう少し具体的に提示しましょう。
また、フレームアクション側のスクリプトも提示されなければ、
回答者が別途用意しなければならず、負担が大きくなります。

		//var minute:String = time[1];		
		var minute:Number = time[1];


----------------
質問する際は、回答者に具体的な情報を与えてください。

hide33
Åê¹ÆNo.45579
投稿日時: 2010-8-25 18:46
半人前
居住地:
投稿: 39
使用環境:
CS4
10.6
Re: GMTとUTC for Twitter
ひろゆきさん、ご指摘有り難う御座いました。

確かにStringになってますね。AS3の時、動作したので気がつきませんでした。
下記エラーは出なくなったのですが、
今度は目的のダイナミックテキストに
_root.date.text = PubDateTwitter.toDate(dateArray[0]);とすると
エラーは出ないのですが、ダイナミックテキストにNaNNaNNaN:NaNの表示がでます。

そこで
var dateStyle:String = d.toString(d.getHours()+":"+minute+" "+(d.getMonth()+1)+"/"+d.getDate()+" "+days[d.getDay()]);
とすると今度はダイナミックテキストにInvalid Dateと表示されています。
まだまだ勉強中なのですが解決法をご教示下さい。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops