我有这段代码:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if chosenFoodObject == nil{
// User Chose a Food
chosenFoodObject = latestHitArray[indexPath.row]
// Update food download index
updateDownloadScore(foodID: chosenFoodObject!["objectID"] as! String)
// Gives size options for selected food
var sizeArray: [String]
sizeArray = Array(chosenFoodObject!.keys)
listResults.removeAll()
if let highlightIndex = sizeArray.index(of: "_highlightResult") {
sizeArray.remove(at: highlightIndex)
}
if let nameIndex = sizeArray.index(of: "name") {
sizeArray.remove(at: nameIndex)
}
if let downloadIndex = sizeArray.index(of: "downloads") {
sizeArray.remove(at: downloadIndex)
}
if let photoIndex = sizeArray.index(of: "photoURL") {
sizeArray.remove(at: photoIndex)
}
if let idIndex = sizeArray.index(of: "objectID") {
sizeArray.remove(at: idIndex)
}
for word in sizeArray{
listResults.append(word)
}
tableView.setContentOffset(CGPoint.zero, animated: false)
self.tableView.reloadData()
}
else{
// User chose a size
chosenSize = listResults[indexPath.row]
showFoodAlertController()
}
} //CRASH HAPPENS HERE
它产生这样的东西:
v.d = new Date().toLocaleTimeString();
所以这是第二天的时间,没有毫秒。 我的问题是:是否有内置调用可以显示毫秒的时间?
我正在寻找类似的东西(毫秒级):
20:11:40
答案 0 :(得分:2)
这样可行,但如果可能的话,我正在寻找更紧凑的东西:
const d = new Date();
v.d = d.toLocaleTimeString() + `.${d.getMilliseconds()}`;
这会产生:
20:17:30.744
请注意,为了使这项工作更好,您需要添加此部分: Formatting milliseconds to always 3 digits for d.getMilliseconds() call
答案 1 :(得分:1)
有ISOString()。但退回一个级别,除了这个例外,没有标准格式化js中的日期。因此,您可以使用toISOString或使用各个日期函数构建自己的字符串。
答案 2 :(得分:1)
我确实发现原始解决方案存在一个问题。当我执行它时,它会产生hh:mm:ss PM.mil
。我假设您需要hh:mm:ss.mil
这是作为函数编写的解决方案,因此您可以传递日期对象并获得正确的格式:
const d = new Date()
const getTimeWithMilliseconds = date => {
const t = d.toLocaleTimeString();
return `${t.substring(0,8)}.${date.getMilliseconds() + t.substring(8,11)}`;
}
console.log(getTimeWithMilliseconds(d));
或者如果你想要24小时格式:
const d = new Date()
const getTimeWithMilliseconds = date => {
return `${date.toLocaleTimeString('it-US')}.${date.getMilliseconds()}`;
}
console.log(getTimeWithMilliseconds(d));
答案 3 :(得分:0)
您不能依赖 toLocaleTimeString 返回特定格式,因为它依赖于实现。自己构建格式更加可靠,例如:
function getFormattedTime(date) {
var d = date || new Date();
var z = n => ('0'+n).slice(-2);
var zz = n => ('00'+n).slice(-3);
return `${z(d.getHours())}:${z(d.getMinutes())}:${z(d.getSeconds())}.${zz(d.getMilliseconds())}`;
}
console.log(getFormattedTime());
console.log(getFormattedTime(new Date(2018,1,1)));
console.log(getFormattedTime(new Date(2018,4,30,23,51,12,89)));

另见Where can I find documentation on formatting a date in JavaScript?