以下代码用于计算两个日期之间的持续时间,例如“ 11/13/2012 11:21:41 AM ”和“ 11/14/2012 2:下午32:59 “。该函数产生正确的输出,在这种情况下: 1:03:11 (以dd:hh:mm格式,所以1天,3小时和11分钟)。在计算之后,脚本将此值存储到Cell中,到目前为止,这是完美的,并且正是我想要的格式。之后,另一个脚本运行并根据需要和脚本中的某些逻辑移动该单元格值,并动态地将其存储到所需的单元格。我遇到的问题是,持续时间是将“AM”或“PM”添加到值中,这是不正确的,因为这是一个非常具体的(和格式化的)DURATION,而不是一天中的实际时间,这些Excel似乎将其视为TIME值。
以下是用于衡量持续时间的代码:
Function TimeSpan(dt1,dt2)
Dim dtTemp
objExcel1.Application.ScreenUpdating = False
If (IsDate(dt1) And IsDate(dt2)) = False Then
TimeSpan = "00:00:00"
Exit Function
End If
If dt2 < dt1 Then
dtTemp = dt2
dt2 = dt1
dt1 = dt2
End If
TimeSpan = objExcel1.Application.WorksheetFunction.Text((dt2 - dt1), "dd:hh:mm")'"dd:hh:mm:ss"
objExcel1.Application.ScreenUpdating = False
End
答案 0 :(得分:0)
查看Excel中的FormatDateTime()
函数。这可能有助于您仅存储您在单元格中的意图。其次,当我使用Excel进行大量日期格式化时,我确保单元格包含我希望放入单元格的数据类型的FORMAT信息。这可能会对你产生影响。在我看来,Excel将您的值视为TIME值,可能在“常规”单元格格式规则下。设置您将此数据放入的单元格,或许可以使用特定的“STRING”格式。这样,Excel不会对您的数据做任何假设,然后您可以根据自己的需要进行解析。