我需要用几种不同的格式解析时间跨度,包括天,小时,分钟,秒.ms,由:
分隔:%OS
,%H:%OS
,%H:%m:%OS
或%d:%H:%m:%OS
。例如:
x <- c("28.6575", "1:14.0920", "1:5:38.1230", "5:23:59:38.7211")
首先想到的是使用strptime
将给定字符串解析为日期。此方法不适用于不包含时间跨度的所有部分的字符串。是否可以将部分格式字符串转换为可选字符串?
strptime("5:23:59:38.7211", "%d:%H:%M:%OS")
# [1] "2015-08-05 23:59:38"
strptime("1:5:38.1230", "%d:%H:%M:%OS")
# [1] NA # wanted: "2015-08-01 01:05:38"
另一种方法是将格式化的值转换为秒(例如1:14.0920 ~~> 74.0920 secs
)。但是,我无法使用R。
答案 0 :(得分:2)
这是@Konrad Rudolph评论的扩展版本:
function magicline() {
var $el, topPos, newHeight;
$mainNav = $("#nav_menu");
$mainNav.append("<li id='magic_line'></li>");
var $magicLine = $("#magic_line");
var isClicked = false; // to show whether menu is clicked or not
$magicLine.height($(".current_page_item").height())
.css("top", $(".current_page_item a").position().top)
.data("origTop", $magicLine.position().top)
.data("origHeight", $magicLine.height());
$("#nav_menu li").find("a").hover(function () {
$el = $(this);
topPos = $el.position().top;
newHeight = $el.parent().height();
$magicLine.stop().animate({
top: topPos,
height: newHeight
});
}, function () {
if(!isClicked){ // if no item is clicked, take line to old position
$magicLine.stop().animate({
top: $magicLine.data("origTop"),
height: $magicLine.data("origHeight")
});
}else{ // else, just keep it there
isClicked = false;
return false;
}
}).click(function(e){ // added click listener
isClicked = true; // flag is set to indicate menu item is clicked.
$magicLine.css({
top: topPos,
height: newHeight
});
});
}
答案 1 :(得分:1)
您还可以添加缺少的小时,分钟和天数据。
对于前者,如果v1
是你的向量,你可以这样做:
res<-sapply(v1,function(x){
if(str_count(x ,":")==2) paste0("1:",x)
else if(str_count(x, ":") < 2) paste0("1:",paste(rep("0:",2-str_count(x ,":")),collapse=""),x)
else as.character(x)
})
strptime(res, "%d:%H:%M:%OS")
它基本上计算冒号的数量,并添加任何缺失的内容以使其成为正确的格式。天数从1开始,所以当没有日期信息时我添加了1:
。