字符串值=" 15:10" 我必须转换字符串值" 15:10"喜欢这个" 1899-12-30 15:10:00.000" 我写下面的代码是否有任何标准的日期/时间格式。
class Node:
def __init__(self, value: int, left_tree, right_tree):
self.value = value
self.left_tree = left_tree
self.right_tree = right_tree
self.number = None # Set through traversal
def is_leaf(self) -> bool:
return not self.has_left_subtree() and not self.has_right_subtree()
def has_left_subtree(self) -> bool:
return self.left_tree is not None
def has_right_subtree(self) -> bool:
return self.right_tree is not None
def to_bytes(self) -> [int]:
"""
Node numbering is calculated through post-order traversal of tree
left_subtree: IF left subtree is leaf THEN 0 ELSE 1
left_subtree-value: IF left subtree is leaf THEN left child value ELSE left child number
right_subtree: IF right subtree is leaf THEN 0 ELSE 1
right_subtree-value: IF right subtree is leaf THEN right child value ELSE right child number
"""
# Base case.
if self.is_leaf():
return []
# Recursive case.
else:
assert self.number is not None
left_byte_repr = self.left_tree.to_bytes() if self.has_left_subtree() else []
right_byte_repr = self.right_tree.to_bytes() if self.has_right_subtree() else []
self_byte_repr = [0 if self.left_tree.is_leaf() else 1,
self.left_tree.value if self.left_tree.is_leaf() else self.left_tree.number,
0 if self.right_tree.is_leaf() else 1,
self.right_tree.value if self.right_tree.is_leaf() else self.right_tree.number]
# Post-order construction.
return left_byte_repr + right_byte_repr + self_byte_repr
def __repr__(self):
return "Node {}: value={}, left tree=[{}], right tree=[{}]".format(self.number, self.value, self.left_tree, self.right_tree)
def post_order_enumerate_tree(tree : Node, enumerate_leaves: bool=False) -> Node:
enumerated_tree, _ = post_order_enumerate_tree_helper(tree, 0, enumerate_leaves)
return enumerated_tree
def post_order_enumerate_tree_helper(tree: Node, curr_node_number: int, enumerate_leaves: bool) -> (Node, int):
# Base case.
if tree.is_leaf():
if enumerate_leaves:
tree.number = curr_node_number
return tree, curr_node_number + 1
else:
return tree, curr_node_number
# Recursive case.
else:
# Traverse left subtree, if it exists.
if tree.has_left_subtree():
enumerated_left_tree, new_node_number = post_order_enumerate_tree_helper(tree.left_tree, curr_node_number, enumerate_leaves)
tree.left_tree = enumerated_left_tree
curr_node_number = new_node_number
# Traverse right subtree, if it exists.
if tree.has_right_subtree():
enumerated_right_tree, new_node_number = post_order_enumerate_tree_helper(tree.right_tree, curr_node_number, enumerate_leaves)
tree.right_tree = enumerated_right_tree
curr_node_number = new_node_number
# Operate on this node itself.
tree.number = curr_node_number
return tree, curr_node_number + 1
def build_tree() -> Node:
leaf_3 = Node(3, None, None)
leaf_2 = Node(2, None, None)
leaf_5 = Node(5, None, None)
tree_a = Node(None, leaf_3, leaf_2)
root = Node(None, tree_a, leaf_5)
return root
def main():
tree = build_tree()
enumerated_tree = post_order_enumerate_tree(tree, enumerate_leaves=False)
print(enumerated_tree.to_bytes())
if __name__ == "__main__":
main()
答案 0 :(得分:3)
拥有DateTime对象后,只需控制它在调用.ToString()
方法时的输出方式。
ToString
重载带有格式字符串。如果您希望输出为:
1899-12-30 15:10:00.000
然后你需要提供的字符串是:
"yyyy-MM-dd HH:mm:ss.fff"
此外,当您解析日期时,您可以在解析格式字符串中包含冒号(" yyyyMMddHH:mm"),因此您不会需要该行
dtnew = dtnew.Replace(":", string.Empty)
答案 1 :(得分:0)
如果您知道传递的字符串始终是格式" HH:mm",您只需将这些元素替换为您将返回的DateTime。
Private Function GetCurrentTime(ByVal dtnew As String) As DateTime
'We get the date
Dim oaDate As DateTime = DateTime.FromOADate(0)
'We change the Hour
oaDate.Hour = dtNew.Substring(0, 2)
'We change the minutes
oaDate.Minute = dtNew.Substring(3, 2)
return oaDate
End Function
此日期的输出格式无关紧要,因为您修改了DateTime结构的字段。