Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 如何在vba excel中将twitter api时间戳转换为unix时间_Sqlite_Vba_Excel - Fatal编程技术网

Sqlite 如何在vba excel中将twitter api时间戳转换为unix时间

Sqlite 如何在vba excel中将twitter api时间戳转换为unix时间,sqlite,vba,excel,Sqlite,Vba,Excel,我正在尝试将twitter时间戳字符串转换为Unix时间(从epoch开始的秒数)。我已经搜索了一段时间,但找不到任何有效的。有人知道如何将“Mon Sep 24 03:35:21+0000 2012”转换为unix时间吗?或者,如果没有,使用sqlite db time函数?将Mon Sep 24 03:35:21+0000 2012作为字符串,这将返回一个长的Unix(又称POSIX)日期 Dim tt As String, ut As Long tt = "Mon Sep 24 03:35

我正在尝试将twitter时间戳字符串转换为Unix时间(从epoch开始的秒数)。我已经搜索了一段时间,但找不到任何有效的。有人知道如何将“Mon Sep 24 03:35:21+0000 2012”转换为unix时间吗?或者,如果没有,使用sqlite db time函数?

将Mon Sep 24 03:35:21+0000 2012作为字符串,这将返回一个长的Unix(又称POSIX)日期

Dim tt As String, ut As Long
tt = "Mon Sep 24 03:35:21 +0000 2012"
ut = ((CDate(Mid(tt, 5, 6) & ",  " & Right(tt, 4) & Mid(tt, 11, 9)) + (IIf(Mid(tt, 21, 1) = Chr(45), -1, 1) * TimeSerial(Mid(tt, 22, 2), Mid(tt, 24, 2), 0))) - 25569) * 86400
Debug.Print ut
对于您提供的样本,结果将为1348457721

编辑:


修改了上述代码,以说明UTC时区正偏移和负偏移。

您必须重新格式化该字符串,以便VBA能够将is识别为日期。要将该日期转换为Unix时间,可以使用
DateDiff(“s”,date1,date2)
。时区如何?实际上,引用一些根据标准规范测试的真正工作的日期时间解析器比使用7个神奇常量的特殊代码要好inside@xmojmr-我已经修改了上述内容以补偿UTC偏移量,但我无法找到任何方法来减少或删除一天中秒数产生的神奇常数(例如86400)或从1899年12月31日到1970年1月1日的天数(例如25569)。其他5个魔法常数对我来说仍然是看不见的,除非你指的是固定长度字符串中不同元素的字符位置。