2015-08-27 59 views
1

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

例如,如果TimeDelta是12.0,则应该将日期时间值提前1/2天(12小时)。如果TimeDelta是36.0,则应该将日期时间值提前1天和12小时。

它几乎正常工作 - 我失去了秒,这是日期,小时和分钟是正确的,但与00秒。

下面是我的代码摘录:

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

上什么错误任何想法?

+0

什么是从EXIF中拉出的字符串的例子? – Jeeped

回答

0

我不确定您是如何实施您的转换程序,但您不应该失去秒。从VBE的立即窗口

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 

结果:

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

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

在我更改日期时间字段之前,秒数字段必须存在,因为照片按照正确的顺序排序,但之后没有。

唉,我可以忍受这个.... RDK