2017-05-07 57 views
-2

以下PHP代碼允許進程只在特定時間之間運行。 GoLang會如何做到這一點?允許從星期天到星期五運行?

$curdate = date('Y-m-d'); 
$mydate=getdate(strtotime($curdate)); 
if ($mydate['wday'] === 0) { 
    if (date('H') < 15) { exit; }; // This is for 0 Sunday!!! 
} 
if ($mydate['wday'] === 5) { 
    if (date('H') > 19) { exit; }; // This is for 5 Friday!!! 
} 
if ($mydate['wday'] === 6) { 
    exit; // This is for 6 Saturday // 
} 

回答

4

這應做同樣的事情:

now := time.Now() 
day := now.Weekday() 
hr := now.Hour() 

if day == 0 { 
    if hr < 15 { os.Exit(0) } 
} 
if day == 5 { 
    if hr > 19 { os.Exit(0) } 
} 
if day == 6 { 
    os.Exit(0) 
} 

凡同樣,每天可通過一個整數(0 - 6)來表示。

注意使用timeos你需要調用

import "time" 
import "os" 

更多有關Golang時間見the documentation

+0

在去如果您將驗證進程已經運行,如果它調用啓動?所以這個過程不會有多個運行實例? – user2777145

+0

@ user2777145對不起,但你將不得不做一些研究或問一個單獨的問題,因爲我不知道 – Bassie

+0

沒問題我的修復是ps | grep for進程在啓動進程之前驗證它沒有運行。 – user2777145

0

不要將PHP代碼編寫爲Go代碼。編寫Go代碼。例如,

package main 

import (
    "os" 
    "time" 
) 

func main() { 
    now := time.Now() 
    hour := now.Hour() 
    switch now.Weekday() { 
    case time.Sunday: 
     if hour < 15 { 
      os.Exit(0) 
     } 
    case time.Friday: 
     if hour > 19 { 
      os.Exit(0) 
     } 
    case time.Saturday: 
     os.Exit(0) 
    } 
    // Do Something 
} 
+0

我處於循環狀態直到我碰到日期/時間的另一側。所以我很想打電話給time.now,然後做一個switch/case或if的測試。不知道哪個是最好的辦法。如果在主要功能中,開關/外殼比幾個開關快。 – user2777145

相關問題