JavaFX:将持续时间格式化为字符串?

时间:2009-08-15 21:46:22

标签: string javafx duration

是否有某种内置方法或简单函数可以将Duration转换为hh:mm:ss格式的字符串?例如,我正在寻找能够将持续时间123402 ms转换为字符串“2:03”的内容。

2 个答案:

答案 0 :(得分:1)

或者,您可以使用java.util.Formatter中的标志。

action: function() {
    txt = "{%tM dur}.{%tS dur}"
}

这将导致前导0,如“02.03”,dur =“123402ms”。

答案 1 :(得分:0)

您可以使用String.valueOf(dur)将持续时间转换为字符串。然后,您可以使用Java格式化类重新格式化String。由于JavaFX将持续时间格式化为字符串(例如'123402.0ms'),因此必须切断String的结尾。如果JavaFX有一个Long.valueOf(dur)函数,那么这将更容易。

见下面的示例:

import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.control.Button;
import java.text.SimpleDateFormat;
import java.util.Date;

var fmt = new SimpleDateFormat("m:ss");
var dur: Duration = 123402ms;
var txt: String = String.valueOf(dur);

Stage {
    title : "Duration Switch"
    scene: Scene {
        width: 400
        height: 200
        content: [
            Text {
                font : Font {
                    size: 24
                }
                x: 10, y: 30
                content: bind "Duration={txt}"
            },
            Button {
                translateY: 140
                text: "Switch"
                action: function() {
                    var durStr = String.valueOf(dur);
                    durStr = durStr.substring(0, durStr.indexOf("."));
                    var date = new Date(Long.parseLong(durStr));
                    txt = fmt.format(date);
                }
            }
        ]
    }
}