顯示具有 日期 標籤的文章。 顯示所有文章
顯示具有 日期 標籤的文章。 顯示所有文章

2010年5月28日

PC 對話 – 在 Excel 2007 中,會以非預期的格式顯示日期

此對話情節說明在 Excel 輸入的日期與實際顯示的結果不同,欲解決此問題,需要調整儲存格的日期格式。

即使我輸入 2009年06月01日,卻自動變成 2009/6/1,為什麼不會顯示我所輸入的日期呢?
     
您是說要讓 1 個位數的月份與日期補上 0,而顯示成 2 個位數,對不對?您可以藉由修改儲存格格式,來達到此目的。首先,在日期的儲存格上,按下滑鼠右鍵,選擇 [格式化儲存格]
     
出現 [儲存格格式] 對話方塊。
     
按下 [數值] 索引標籤,接著按下 [類別] 中的 [日期]。有看到有許多類型的日期,對吧?從清單中,選擇您要的格式。
     
嗯,在清單中,找不到顯示 2009年06月01日 的格式。
     
您也可以使用既有的格式加以自訂。
按下 [類別] 中的 [自訂],從類型清單中,按一下與您所要之格式相近的項目。以您的例子來說,要選擇 yyyy"年"m"月"d"日"
     
所以 yyyy 是指年,m 是指月,而 d 是指日,字母的個數代表數字的位數。
     
沒錯!在 [類型] 文字方塊中,將 m 改成 mm,把 d 改成 dd,然後按下 [確定]
     
太好了!現在顯示成 2009年06月01日 了。
     
您要記住,您也可以變更行事曆類型。按下 [類別] 中的 [日期],選擇 [行事曆類型] 下拉式清單中的其中一種。
     
好,我知道了。
     
當您有顯示數字,而非日期的問題,可以參考 “PC 對話 – 為什麼 Excel 2007 中的數字顯示不正確 ?”。

2006年7月19日

如何利用批次檔取得今日的日期或時間,甚至是部分的日期或時間

Windows 2000/XP/Server 2003 有兩個未公開的環境變數,可以顯示目前的日期與時間,分別是 %date%%time%,透過這兩個環境變數,管理者可以自行撰寫批次檔(.bat 或 .cmd檔)取得所需部分的日期或時間內容。就讓我們透過下面的範例來看看這兩個變數的內容,並如何搭配
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

指令取得所需的部分日期或時間內容。

先看看日期變數的內容是什麼:
C:\>echo %date%

螢幕輸出:
2006/03/07 星期二 <----- Windows XP/Server 2003 的結果
星期二 2006/03/07 <----- Windows 2000 的結果

看到沒?Windows 2000 會先顯示星期,再顯示日期,所以我們在後續取出日期的年、月、日或星期的時候,要特別注意他們的順序。 再來看看時間變數的內容是什麼:
C:\>echo %time%
螢幕輸出:
14:21:57.47

接著我們使用 FOR 指令來把日期的分隔符號「/」以及空白(White Space)去掉,並將其結果顯示在螢幕上(下面的解說是以 Windows XP/Server 2003 為例,如果是 Windows 2000,則請自行舉一反三):

MyDate.bat 的檔案內容如下所示:
----程式開始---- REM 取得日期
FOR /F "tokens=1-4 delims=/ " %%a IN ("%date%") DO (
SET _MyDate=%%a%%b%%c%%d
)

REM 顯示去掉分隔符號後的結果
echo %_MyDate%
----程式結束----

看看執行的結果:
C:\>MyDate
螢幕輸出:
20060307星期二

想不到只是透過幾行程式碼就可以去掉日期變數的分隔符號了,相信有不少人看不懂那段程式碼,就讓我簡單地說明一下吧!

/F 是指定將後面 %date% 的環境變數當成檔案來處理,而處理的依據就是在「"tokens=1-4 delims=/ "」這邊。tokens如果按照字面翻譯的話,是權杖的意思,這樣翻不太直覺,在這邊翻成順序可能比較好一些。以這個例子來說,就是要取得順序 1 ~ 4 的字串,那程式怎麼知道這個順序的分法呢?
透過 delims 這個引述的設定,程式就知道要怎麼去分析 %date% 環境變數的順序。在 delims 等號右邊的字元就是用來指定分割順序的依據。以這個例子來說,我們用「/」與「 」(空白,White Space)這兩個分隔符號來分割 %date% 的順序。因此原本 %date% 的內容是 2006/03/07 星期二,在程式來看就變成了:

順序 內  容
﹉﹉ ﹉﹉﹉﹉
1    2006
2      03
3     07
4   星期二

%%a 是說把順序 1 的結果指派給名稱為 %%a 的變數,因此順序 2 的變數名稱就會是 %%b,以此類推,最多可以有 52 個變數,原因如下:變數名稱有大小寫之分,所以 %%a 跟 %%A 不同,且僅能以一個英文字母來命名,所以 26(個字母)× 2(大寫跟小寫 2 種)=52(個)。

DO 後面的括號內容是用來指定所要執行的命令內容,以這個例子來說,就是指定一個名稱為 _MyDate 的變數,它的內容是由 %%a%%b%%c%%d 所構成的。

再來我們看看使用 FOR 指令去掉時間變數之分隔符號的結果:

MyTime.bat 的檔案內容如下所示:
----程式開始---- REM 取得時間
FOR /F "tokens=1-4 delims=:." %%a IN ("%time%") DO (
SET _MyTime=%%a%%b%%c%%d
)

REM 顯示去掉分隔符號後的結果
echo %_MyTime%
----程式結束----

看看執行的結果:
C:\>MyTime

螢幕輸出:
14243241

講了這麼多,您知道該怎麼運用 %date%%time% 環境變數了嗎?

參攷資料: