0

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

4

2 回答 2

1

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

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

对于 dur = "123402ms",这将导致前导 0,如 "02.03"。

于 2009-08-25T16:53:32.863 回答
0

您可以使用 String.valueOf(dur) 将 Duration 转换为字符串。然后,您可以使用 Java 格式化类重新格式化字符串。由于 JavaFX 将持续时间格式化为字符串的方式(例如“123402.0ms”),您必须切断字符串的结尾。如果 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);
                }
            }
        ]
    }
}
于 2009-08-17T09:18:38.043 回答