2011年11月4日 星期五

顯示一個日期並使用中文的星期格式

VB語法

西元日期 & "("& WeekdayName(DatePart(DateInterval.Weekday,西元日期)) &")"

如此顯示出來的就是如同 2006/2/22 (星期二) 的中文格式了。

在 WeekdayName 函式中原本有第二個 Optional 的參數 Abbreviate,如果你設定為 True,那麼它將以簡短格式出現(例如 Tuesday 變成 Tue)。不過實作之後,發現在中文版裡面並不起作用,所以不管你將這個參數設定為 True 或 False,它都一律是「星期二」的格式,而不會變成「二」。

==========================================================
C# 語法

匯入 Microsoft.VisualBasic 命名空間


using Microsoft.VisualBasic;

string wDay = DateAndTime.WeekdayName((int)startDay.DayOfWeek, true, Microsoft.VisualBasic.FirstDayOfWeek.Monday);

值得注意的是, 似乎必須將 FirstDayOfWeek 指定為 Monday 而不是你可能以為的 Sunday。中間那個參數設定為 true 或 false 並不影響結果。還有, 在 VB 中你可以不需要輸入後面那兩個 Optional 參數, 但在 C# 它並不允許, 所以請乖乖的把字打進去吧!

TransactionScope timeout問題

System.Transactions預設值為一分鐘,如果會造成TimeOut

解決方法如下

方法一:在machine.config中設定
在C:\Windows\Microsoft.NET\Framework\framework版本\Config 加入
<system.transactions>
<machineSettings maxTimeout="01:30:00" />
</system.transactions>

方法二:在Web.config中設定
<configuration>
<system.transactions>
<defaultSettings timeout="00:05:00" />
</system.transactions>
</configuration>

方法三:用程式指定
Dim ts As New System.Transactions.TransactionScope(TransactionScopeOption.Required, New System.TimeSpan(0, 5, 0))