47 lines
1.6 KiB
Haxe
Executable File
47 lines
1.6 KiB
Haxe
Executable File
package haxework.format;
|
|
|
|
import haxework.provider.Provider;
|
|
import haxework.locale.ILocale;
|
|
|
|
class Formatter implements IFormatter {
|
|
|
|
public function formatDate(date:Date, format:String):String {
|
|
var locale:ILocale = Provider.get(ILocale);
|
|
var r:EReg = ~/\{(\w+)\}/g;
|
|
return r.map(format, function(r:EReg):String {
|
|
return switch(r.matched(1)) {
|
|
case "ss": doubleDigit(date.getSeconds());
|
|
case "nn": doubleDigit(date.getMinutes());
|
|
case "hh": doubleDigit(date.getHours());
|
|
case "dd": doubleDigit(date.getDate());
|
|
case "d": Std.string(date.getDate());
|
|
case "mm": doubleDigit(date.getMonth() + 1);
|
|
case "yyyy": date.getFullYear() + "";
|
|
case "month": locale.getArray("month")[date.getMonth()];
|
|
case "Month": firstLetterUp(locale.getArray("month")[date.getMonth()]);
|
|
case "month_r": locale.getArray("month_r")[date.getMonth()];
|
|
case "Month_r": firstLetterUp(locale.getArray("month_r")[date.getMonth()]);
|
|
default: r.matched(0);
|
|
}
|
|
});
|
|
}
|
|
|
|
public function formatTime(time:Int):String {
|
|
time = Math.round(time / 1000);
|
|
var mm:Int = Math.floor(time / 60);
|
|
var ss:Int = time - mm * 60;
|
|
return doubleDigit(mm) + ":" + doubleDigit(ss);
|
|
}
|
|
|
|
private static function doubleDigit(num:Int):String {
|
|
return ((num < 10) ? "0" : "") + num;
|
|
}
|
|
|
|
private static function firstLetterUp(s:String):String {
|
|
return s.charAt(0).toUpperCase() + s.substring(1);
|
|
}
|
|
|
|
public function formatDateFloat(date:Float, format:String):String {
|
|
return formatDate(Date.fromTime(date), format);
|
|
}
|
|
} |