[英]Parse string value to datetime value
我需要將字符串值解析為日期時間值,我的日期格式如下:
DD.MM.YYYY
我想以這種格式解析值:
YYYY-MM-DD
我試圖這樣做:
DateTime.ParseExact(date_req, "yyyy-MM-dd", CultureInfo.InvariantCulture);
但是我有一個錯誤:字符串未被識別為有效的DateTime。
有沒有辦法做到這一點?
如果您有格式為DD.MM.YYYY
的字符串,為什么要將YYYY-MM-DD
傳遞給ParseExact函數?
嘗試這樣:
string dateStr = "12.06.2012";
DateTime date = DateTime.ParseExact(dateStr, "dd.MM.yyyy", CultureInfo.InvariantCulture);
然后,當您想將此DateTime
實例輸出到某處時,可以使用YYYY-MM-DD
格式,如下所示:
string result = date.ToString("yyyy-MM-dd");
解析日期時,您需要指定要閱讀的格式,而不是以后要輸出的格式。
因此,請使用dd.MM.yyyy
作為ParseExact
參數。
檢查DateTime.ParseExact方法(字符串,字符串,IFormatProvider)將日期和時間的指定字符串表示形式轉換為其等效的DateTime。 字符串表示形式的格式必須與指定的格式完全匹配,否則將引發異常。
您必須將格式字符串指定為DD.MM.YYYY
而不是"yyyy-MM-dd"
。
嘗試這個:
DateTime dateValue = DateTime.ParseExact(date_req, "DD.MM.YYYY", CultureInfo.InvariantCulture );
// use this when you need to show that formatted date value
string formattedDate = dateValue.ToString("yyyy-MM-dd");
更好的方法是使用DateTime.TryParseExact方法 ,如果您希望將其用作日期而不是字符串,請修改您的區域性信息和日期分隔符。
CultureInfo enUS = new CultureInfo("en-US");
string dateString;
DateTime dateValue;
dateString = "05.01.2009";
if (DateTime.TryParseExact(dateString, "DD.MM.YYYY", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
我認為您想要做的是解析dd.MM.yyyy
,然后將其顯示為yyyy-MM-dd
。
您首先必須將string
解析為DateTime
:
DateTime date = DateTime.ParseExact(date_req, "yyyy-MM-dd", CultureInfo.InvariantCulture);
現在, date
是計算機實際理解的日期的表示形式(之前只是一個字符串)。 現在,您可以隨時顯示該對象:
string yyyyMMdd = date.ToString("yyyy-MM-dd");
string arabic = date.ToString("yyyy-MM-dd", new CultureInfo("ar"));
// and so on
不要忘記,當將日期從字符串轉換為DateTime
並返回時,文化和時區值得牢記。
首先以現有格式解析它,然后轉換為所需的字符串格式。
var date = DateTime.ParseExact(date_req, "dd.MM.yyyy", CultureInfo.InvariantCulture);
var str = date.ToString("yyyy-MM-dd");
您可以先將其轉換為字符數組。 那么您可以將年/月/年分別解析為整數。 您知道數字的索引,因此這很容易。 之后,您可以按照自己喜歡的方式連接每個元素。
錯誤。 您有蛋糕,想吃木樁。 為了使您的胃相信蛋糕是樁,您必須將蛋糕轉換成樁。 無法做到這一點。 解析是要接受一個值,然后使用模式(或多個)將其轉換為其他值,而不進行轉換。 因此,您想要的可能是正確的,但您提出的要求是錯誤的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.