請選擇 進入手機版 | 繼續訪問電腦版

微剋多資訊

 找回密碼
 註冊

Sign in with google

Google帳號登入

搜索
回覆 4則 瀏覽 1020篇
Line

[問題已解決] 【VBS】把指定日期轉換成LDAP時間戳

該用戶從未簽到

升級   51.8%

發表於 2024-6-29 19:48 | 顯示全部樓層 |閱讀模式
本帖最後由 jmsdhn 於 2024-7-5 21:25 編輯

打擾了!

我問了Copilot
如何把指定日期轉換成LDAP時間戳
不過它只寫出把指定日期轉換成Unix時間戳
內容如下:
' 指定日期(格式:YYYY-MM-DD)
Dim specifiedDate
specifiedDate = "2024-06-29"

' 將指定日期轉換為Unix時間戳
Function ConvertToUnixTimestamp(dateString)
    Dim epochDate
    epochDate = DateValue("1970-01-01")
    Dim specifiedDateTime
    specifiedDateTime = DateValue(dateString)
    Dim totalSeconds
    totalSeconds = DateDiff("s", epochDate, specifiedDateTime)
    ConvertToUnixTimestamp = totalSeconds
End Function

' 印出Unix時間戳
WScript.Echo "指定日期 " & specifiedDate & " 的Unix時間戳為:" & ConvertToUnixTimestamp(specifiedDate)


但是出現


請教這要怎麼改才正確
感謝教學!











天啊!
我知道了
上面的指令不能用UTF-8格式儲存


不知道該不該痛很Notpad++(苦笑)

想另外請教
個人已經知道
Unix UT時間戳記是從1970-01-01 00:00:00開始計算,
Windows NT時間戳記是從1601-01-01 00:00:00開始計算的,
UT和NT時間戳記相差 11644473600 秒

要如何在上述的指令群中
再加入公式
LDAP時間戳=(Unix時間戳+11644473600 )*10的七次方
並複製到剪貼簿
感謝教學!

本帖子中包含更多資源

您需要 登入 才可以下載或查看,沒有帳號?註冊

x
樓主熱門主題

該用戶從未簽到

升級   0%

發表於 2024-6-29 21:27 | 顯示全部樓層
這樣問Copilot看看:
How to convert a specific date like 2024-06-29 to 18-digit LDAP timestamps using VBScript?

使用道具

該用戶從未簽到

升級   51.8%

 樓主| 發表於 2024-6-29 21:48 | 顯示全部樓層
問了
它反而說
如何把時間戳轉成人類可看的日期

在 VBScript 中,將特定日期(例如 2024-06-29)轉換為 18 位元的 LDAP 時間戳記需要一些步驟。LDAP 時間戳記通常用於 Microsoft Active Directory 中的 pwdLastSet、accountExpires、LastLogon、LastLogonTimestamp 和 LastPwdSet 等屬性1。

以下是兩種不同的 LDAP 時間戳記格式以及如何進行轉換的方法:

18 位元 LDAP/FILETIME 時間戳記:
這種格式也被稱為「Windows NT 時間格式」、「Win32 FILETIME 或 SYSTEMTIME」或 NTFS 檔案時間。
它表示自 1601 年 1 月 1 日 UTC 開始的 100 納秒間隔數量。
目前的 LDAP/Win32 FILETIME 值為 133641088590000000 或科學記號中的 13364108859e7。
若要將其轉換為人類可讀的日期,您可以使用以下方法:
在 Windows 命令列中,使用 w32tm.exe /ntte 131001091660000000。
在 PowerShell 中,使用 (Get-Date 1/1/1601).AddDays(131001091660000000/864000000000)2。
YMD LDAP 時間戳記:
這種格式更簡單,以年月日時分秒的形式表示,例如 20240629042739Z。
T 通常表示時區,通常為 ‘Z’(Zulu 時區 = UTC/GMT)。
若要將其轉換為人類可讀的日期,您可以使用以下方法:
使用 VBScript,可以使用 DateDiff("s", "01/01/1970 00:00:00", myDate),其中 myDate 是您的 YMD 時間戳記3。

或許我該接著一樓的指令
細節地問如何導出UNIX時間戳字串?

使用道具

該用戶從未簽到

升級   0%

發表於 2024-6-29 22:24 | 顯示全部樓層
jmsdhn 發表於 2024-6-29 21:48
問了
它反而說
如何把時間戳轉成人類可看的日期

你是用中文還是英文問的?




1 0

使用道具

該用戶從未簽到

升級   51.8%

 樓主| 發表於 2024-6-30 10:34 | 顯示全部樓層
我是直接把英文問句整段貼上去問的
會不會...
是因為Win11是正體中文或台灣地區
所以他自行以中文台灣的方式回答

先拿大大的來試看看
總之感謝回應!

使用道具

您需要登入後才可以回帖 登入 | 註冊

本版積分規則

小黑屋|Archiver|微剋多資訊(MicroDuo)

GMT+8, 2024-7-18 10:10

Discuz! X

© 2009-2023 Microduo

快速回覆 返回頂部 返回列表