這樣。不過只是個精確到納秒的計時器,不是精確到納秒的當(dāng)前時間。windows好像只能拿到ms精度的當(dāng)前時間吧,不是很清楚。
在北辰等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需定制,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),北辰網(wǎng)站建設(shè)費用合理。
package main
import (
"syscall"
"time"
"unsafe"
)
func NewStopWatch() func() time.Duration {
var QPCTimer func() func() time.Duration
QPCTimer = func() func() time.Duration {
lib, _ := syscall.LoadLibrary("kernel32.dll")
qpc, _ := syscall.GetProcAddress(lib, "QueryPerformanceCounter")
qpf, _ := syscall.GetProcAddress(lib, "QueryPerformanceFrequency")
if qpc == 0 || qpf == 0 {
return nil
}
var freq, start uint64
syscall.Syscall(qpf, 1, uintptr(unsafe.Pointer(freq)), 0, 0)
syscall.Syscall(qpc, 1, uintptr(unsafe.Pointer(start)), 0, 0)
if freq = 0 {
return nil
}
freqns := float64(freq) / 1e9
return func() time.Duration {
var now uint64
syscall.Syscall(qpc, 1, uintptr(unsafe.Pointer(now)), 0, 0)
return time.Duration(float64(now-start) / freqns)
}
}
var StopWatch func() time.Duration
if StopWatch = QPCTimer(); StopWatch == nil {
// Fallback implementation
start := time.Now()
StopWatch = func() time.Duration { return time.Since(start) }
}
return StopWatch
}
func main() {
// Call a new stop watch to create one from this moment on.
watch := NewStopWatch()
// Do some stuff that takes time.
time.Sleep(1)
// Call the stop watch itself and it will return a time.Duration
dur := watch()
}
這和語言沒關(guān)系,操作系統(tǒng)要提供這樣的原語。linux和windows都是可以的。
1.可以用DateDiff函數(shù),返回值表示兩個指定日期間的時間間隔。
2.也可以把兩個日期直接相減:
a = Now - CDate("2014-1-1") '2014年1月1日到今天,共這么多天。
b = CDate("2014-3-1") - CDate("2014-1-1") '2014年1月1日到2014年3月1日,共這么多天。
vb的函數(shù)是強(qiáng)大的,閏年和平年它自己會處理,無需擔(dān)心。
追問:
那需要什么控件,能詳細(xì)說一下嗎
回答:
不需要任何控件呢,是系統(tǒng)自帶的函數(shù)呢,你寫到代碼里面試試就可以了。
你稍等,我給你寫代碼:
'窗體弄一個按鈕Command1,加入以下代碼,你試試看:
Private Sub Command1_Click()
Dim a As Long
Dim b As Long
a = Now - CDate("2014-1-1")'2014年1月1日到今天,共這么多天。
b = CDate("2014-3-1") - CDate("2014-1-1")'2014年1月1日到2014年3月1日,共這么多天。
Print "2014年1月1日到今天,共" a "天。"
Print "2014年1月1日到2014年3月1日,共" b "天。"
End Sub
通過函數(shù)獲得。
主要是通過time.Now()函數(shù)和time.AddDate函數(shù)以及time.Date()函數(shù)來構(gòu)造和加減日期,獲取一年所有的周日。
首先這個具體日期是和這個時間應(yīng)該是一一對應(yīng)的關(guān)系,下周三應(yīng)該有一個具體的數(shù)據(jù)和日期一一對應(yīng),比如說下周三是今年的具體的第幾天,然后就可以計算出當(dāng)時的日期了。比如:
// 2022年第一天
day := time.Date(2022, 1, 1, 0, 0, 0, 0, time.Local)
// 2022年的第304天
days := 304
// 2022年第304天的日期
expectedDay := day.Add(time.Duration(days*24*3600) * time.Second)
// 這一天是星期幾
fmt.Println(expectedDay.Weekday())
// 這一天的日期
fmt.Println(expectedDay.Date())