簡體   English   中英

以 dd/mm/yy 格式讀取 Select 和讀取日期的更好方法?

[英]Better way to Select & Read Date in dd/mm/yy format?

在早期的 vb.net 2008 中,我使用 DateTime 以dd/mm/yy格式讀取日期。 我用來將文化信息更改為英國格式。 這樣日期將從 SQL 服務器中選擇為dd/mm/yy格式。

但我知道玩CultureInfo不好。 即使我使用了以下方式。

對我來說還有其他更好的想法嗎?

Sub Form_Load()
    Thread.CurrentThread.CurrentCulture = New CultureInfo("en-GB", False)    
End Sub

對我來說還有其他更好的想法嗎? 感謝您的想法。

感謝和問候。

從 DateTime 到字符串:

string s = DateTime.Today.ToString("dd/MM/yyyy");

從字符串到日期時間:

DateTime d;
bool success = DateTime.TryParseExact("26/05/2011", "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out d);

日期時間 --> 字符串

DateTime.Now.ToString( new CultureInfo("fr-FR", false) );

字符串 --> 日期時間:

首選方法可能是DateTime.Parse()

dateString = "16/02/2008 12:15:12";
try 
{
     dateValue = DateTime.Parse(dateString, new CultureInfo("en-GB", false));
     Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
}   
catch (FormatException) 
{
     Console.WriteLine("Unable to convert '{0}'.", dateString);
}

這樣您就不會更改當前上下文的文化信息。 這確實假設您事先知道格式是什么。

在 C# 中,您可以獲得所需格式的日期字符串,例如,

string date = DateTime.Now.ToString("dd/MM/yyyy");

如果你想從代表特定文化中的 DateTime 的字符串值中獲取 DateTime object,你可以這樣做

     DateTime dt = new DateTime();
                DateTime.TryParse("16/01/2011", System.Globalization.CultureInfo.CreateSpecificCulture("en-GB"),
  System.Globalization.DateTimeStyles.None, out dt);

您可以使用 CultureInfo 格式化日期,而無需為整個線程設置文化,這要歸功於IFormatProvider接口:

DateTime d = DateTime.Now;
CultureInfo c = new CultureInfo("en-GB", false);
string s = d.ToString(c.DateTimeFormat);

這還有一個額外的優勢,即您沒有任何硬編碼格式,並且如果用戶更改其機器上的本地化設置,您的應用程序將反映他們的偏好。

您可以使用DateTime.TryParse來解析日期...

string s = "01/01/2011";
DateTime date;
if (DateTime.TryParse(s, out date))
{
    // Parsed correctly
}
else
{
    // Invalid string!
}

甚至使用IFormatProvider來幫助TryParse制定格式。

CultureInfo c = new CultureInfo("en-GB", false);
string s = "01/01/2011";
DateTime date;
if (DateTime.TryParse(s, c.DateTimeFormat, DateTimeStyles.None, out date))
{
    // Parsed correctly
}
else
{
    // Invalid string!
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM