【问题标题】:Losing seconds when I modify a datetime修改日期时间时丢失秒数
【发布时间】:2015-08-27 07:16:02
【问题描述】:

我有一个 Excel 宏,它可以修改 JPG 照片的 EXIF“拍摄日期”字段。基本上,我从从 EXIF 数据中检索到的日期时间值中添加或减去一个十进制值,然后将新的日期时间值放回去。

例如,如果 TimeDelta 是 12.0,那么它应该将 datetime 值提前 1/2 天(12 小时)。如果 TimeDelta 是 36.0,那么它应该将 datetime 值提前 1 天 12 小时。

它几乎可以正常工作 - 我失去了秒数,即日期、小时和分钟是正确的,但是 00 秒。

以下是我的代码节选:

Dim sDateTemp As String, NewDateTaken As Date, TimeDelta As Single, Time24 As Single
Time24 = 24#
NewDateTaken = CDate(sDateTemp) + (TimeDelta / Time24)

对出了什么问题有任何想法吗?

【问题讨论】:

  • 从 EXIF 中提取的字符串的示例是什么?

标签: vba excel datetime


【解决方案1】:

我不确定您是如何实施转换过程的,但您不应该浪费时间。

Sub t()
    Dim sDateTemp As String, NewDateTaken As Date, TimeDelta As Single, Time24 As Single
    Time24 = 24#
    TimeDelta = Int(12)   'no sense in pretending that we can get a decimal into a single
    sDateTemp = "26-AUG-2015 09:36:45"
    Debug.Print sDateTemp
    Debug.Print CDate(sDateTemp)
    NewDateTaken = CDate(sDateTemp) + (TimeDelta / Time24)
    Debug.Print NewDateTaken
End Sub

来自 VBE 的即时窗口的结果:

t
26-AUG-2015 09:36:45
08/26/2015 9:36:45 AM 
08/26/2015 9:36:45 PM 

【讨论】:

    【解决方案2】:

    感谢 JEEPED,我已经解决了这个问题。从 EXIF 元数据返回的字符串不包括秒字段。

    秒字段必须在某处,因为在我更改日期时间字段之前照片以正确的顺序排序,但不是之后。

    哦,好吧,我可以忍受这个....RDK

    【讨论】:

      猜你喜欢
      • 2016-12-14
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      • 2023-03-08
      • 2021-06-29
      • 1970-01-01
      相关资源
      最近更新 更多