我有以下代码,这些代码以前工作得很好,但它现在还没有工作。
以下是将字符串日期转换为日期并与今天的日期进行比较的代码。 代码:
Dim fileDate1 As Date
fileDate1 = CDate("12/08/16") 'dd/mm/yy'
If Format(fileDate1, "yyyymmdd") < Format(Date, "yyyymmdd") Then
//delete file because date changed
KillFileOnMac XMLFilePath
End If
有人能告诉我这里我缺少什么吗?
答案 0 :(得分:4)
Nanji,关于第二行的评论是可疑的,在我的系统上,该行在2012年8月16日设置了fileDate1。使用它会更加安全:
fileDate1 = DateSerial(2016, 8, 12)
(为清楚起见,您可能还会考虑删除对“格式”的调用,只需直接比较日期:If fileDate1 < Date Then...
)
答案 1 :(得分:1)
看起来你期待cDate(“2016年8月12日”)将等于2016年8月12日。该日期实际上是2016年12月8日。
我们可以告诉:
Dim fileDate1 As Date
fileDate1 = CDate("12/06/16")
MsgBox Format(fileDate1, "yyyymmdd")
显示20161206。
因此,看起来您的日期字符串输入是问题所在。一旦你完成了,就像Mats Lind建议的那样,你不需要格式化日期来比较它们。以下是我将如何处理它:
Dim fileDate1 As Date
fileDate1 = CDate("12/08/16")
If fileDate1 < DateValue(Now) Then
MsgBox "I shall kill the file because the date changed"
KillFileOnMac XMLFilePath
Else
MsgBox "The file date is today or newer "
End If
我使用dateValue(Now),因为它可以跨平台工作。我回避MacScript,因为我不认为它会永远得到支持。 希望这可以帮助。