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

最終投稿者:Logo1 mini fmy 更新:2011/08/30 01:11:17
ミリ秒で表された時間の数値を、時・分・秒・ミリ秒単位に区切って文字列で返します。
主に関数getTime()の受け皿などにご利用下さい。

intercept_strの引数となる文字を「時」「分」「秒」「ミリ秒」等に変えてもいいでしょう。

aoihikawa様
『汎用関数スクリプト』 0埋め文字列の作成
の関数addZero()を使用しています。
事前に定義が必要です。

この範囲で不具合などございましたらご報告下さい。

def getStringTime_work( time, time_org, force, next_force, intercept_str, div, dig_max, dig_num )
	text = ""
	if force == 1 || ( force == 0 && div <= time_org )
		if div == 0
			div = 1
		end
		dig = floor( time / div ) % dig_max
		text = addZero( dig, dig_num )
		if 0 <= next_force
			text = text + intercept_str
		end
	end
	return text
end

# time : getTime()とかからのミリ秒単位の値
# force_x = 1:数値が0でも表示
# 		0:数値があれば表示
# 		-1:数値があっても表示しない
def getStringTime( time, force_h, force_m, force_s, force_ms )
	text = ""
	time_org = time
	
	div = 1000*60*60	# hour
	text = text + getStringTime_work( time, time_org, force_h, force_m, ":", div, 24, 2 )
	time = time % div
	
	div = 1000*60	# minute
	text = text + getStringTime_work( time, time_org, force_m, force_s, "'", div, 60, 2 )
	time = time % div
	
	div = 1000	# second
	text = text + getStringTime_work( time, time_org, force_s, force_ms, "\"", div, 60, 2 )
	time = time % div
	
	div = 0	# milli second
	text = text + getStringTime_work( time, time_org, force_ms, 0, ".", div, 1000, 3 )
	time = time % div
	
	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」と表示されれば正常。

コメントする

コメントするには、ログインする必要があります。

コメント一覧

コメントはありません。