スクリプト/コツ/時間(ミリ秒)を文字列で表示する関数(履歴ID:119)

最終投稿者:Logo1 mini fmy 更新:2011/08/30 01:11:17
スクリプト/コツ/時間(ミリ秒)を文字列で表示する関数

関数の小分けに失敗したので必要以上に変数使ってたり長かったりします。
カスタマイズしやすくなってる…かも。

この範囲で不具合などございましたらご報告下さい。
追って対応させて頂きます。


以下を呼び出し元(使いたい所)より前に定義(使える状態にしておくって事)。

# time_org : getTime()とかからのミリ秒単位の値
# force_x = 1:数値が0でも表示
# 		0:数値があれば表示
# 		-1:数値があっても表示しない
def getStringTime( time_org, force_h, force_m, force_s, force_ms )
	text = ""
	time = time_org
	
	# hour
	force = force_h
	next_force = force_m
	intercept_char = ":"
	div = 1000*60*60
	if force == 1 || ( force == 0 && div <= time_org )
		dig = floor( time / div ) % 24
		dig1 = dig % 10
		dig10 = floor( dig / 10 ) % 10
		text = text + toString(dig10) + toString(dig1)
		if 0 <= next_force
			text = text + intercept_char
		end
	end
	time = time % div
	
	# minute
	force = force_m
	next_force = force_s
	intercept_char = "'"
	div = 1000*60
	if force == 1 || ( force == 0 && div <= time_org )
		dig = floor( time / div ) % 60
		dig1 = dig % 10
		dig10 = floor( dig / 10 ) % 10
		text = text + toString(dig10) + toString(dig1)
		if 0 <= next_force
			text = text + intercept_char
		end
	end
	time = time % div
	
	# second
	force = force_s
	next_force = force_ms
	intercept_char = "\""
	div = 1000
	if force == 1 || ( force == 0 && div <= time_org )
		dig = floor( time / div ) % 60
		dig1 = dig % 10
		dig10 = floor( dig / 10 ) % 10
		text = text + toString(dig10) + toString(dig1)
		if 0 <= next_force
			text = text + intercept_char
		end
	end
	time = time % div
	
	# milli second
	force = force_ms
	if force == 1 || ( force == 0 && 0 <= time_org )
		dig = time % 1000
		dig1 = dig % 10
		dig10 = floor( dig / 10 ) % 10
		dig100 = floor( dig / 100 ) % 10
		text = text + toString(dig100) + toString(dig10) + toString(dig1)
	end
	
	return text
end

サンプル1

h = 12 *1000*60*60
m = 34 *1000*60
s = 56 *1000
ms = 789
str = getStringTime( h+m+s+ms, 0, 0, 0, 0 )
speak( str )
「12:34'56"789」と表示されれば正常。

サンプル2

h = 0 *1000*60*60
m = 0 *1000*60
s = 56 *1000
ms = 789
str = getStringTime( h+m+s+ms, 0, 1, 1, -1 )
speak( str )
「00'56」と表示されれば正常。

ゆーても主な使われ方は関数getTime()の受け皿としてを想定しての事です。