代码之家  ›  专栏  ›  技术社区  ›  erjiang

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

  •  0
  • erjiang  · 技术社区  · 15 年前

    是否有某种内置方法或简单函数可以将持续时间转换为 hh:mm:ss 格式?例如,我正在寻找可以转换持续时间 123402 ms 变成一系列 2:03 “。

    2 回复  |  直到 15 年前
        1
  •  1
  •   JimClarke    15 年前

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

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

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

        2
  •  0
  •   Matthew Hegarty Edwin Lunando    15 年前

    可以使用string.valueof(dur)将持续时间转换为字符串。然后,可以使用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);
                    }
                }
            ]
        }
    }