2015-04-15 24 views
0

我已經填充的組合框與格式幾個月和幾年:如果月份是單詞,我可以獲得日期時間嗎?

August 2014 
July 2014 
June 2014 

在選擇(比方說,2014年7月),我非常喜歡創造格式爲DateTime變量'01/7月14日」。有一種方法需要一個月,目前是一個字符串,並轉換爲一個整數?

非常感謝您的時間。

+2

是的,有很多方法可以做到這一點 –

+0

目前我打算用空間分割字符串給我「月」和「2014」,然後通過LongMonthNames迭代,直到我打了一個月的比賽。只是檢查是否有更有效的方法。 –

+0

從您發佈的內容看,似乎沒有更有效的方法。沒有看到填充ComboBox的實際代碼很難說。 –

回答

1

有沒有一種方法可以取一個月爲目前的字符串並轉換爲整數?

是的。循環搜尋匹配的可能名稱:

function GetMonthNumber(const fs: TFormatSettings; const Name: string): Integer; 
begin 
    for Result := Low(fs.LongMonthNames) to High(fs.LongMonthNames) do 
    if SameText(Name, fs.LongMonthNames[Result]) then 
     exit; 
    Result := -1; 
end; 
0

這裏是我的簡單示例如何獲取月份編號。

const 
Month : array [1..12] of string = ('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); 

function TForm1.IndexOfMonth(s: string): integer; 
var 
    I: Integer; 
begin 
    result := -1; 
    for I := 1 to 12 do 
    begin 
     if UpperCase(S) = UpperCase(Month[i]) then 
     begin 
     result := i; 
     break; 
     end; 
    end; 
end; 

function TForm1.GetMonthFromCombo : integer; 
var s : string; 
begin 
    s := Copy(ComboBox1.Text,1, Pos(' ', ComboBox1.Text)-1); 
    result := IndexOfMonth(s); 
end; 
+0

與此有關的一些問題。首先,函數不應該是一種形式的方法。這是錯誤的級別。其次,函數並不總是設置返回值。第三,你重複月份名稱而不是使用內置值。第四,你的比較是區分大小寫的。 Zam寫的答案超出了你的回答,這並不明顯。 –

+0

這只是一個例子。爲此目的,不管這是一種方法還是功能。你對大小寫敏感。我還添加了返回結果。關於Zam的回答,我沒有看到它。對不起。 –

+0

這確實很重要,不管這是一種形式的方法,還是以可重用的方式暴露。通過將其作爲表單的一種方法,您可以向顯然仍在學習的開發人員展示一個示例。如果開發者遵循你的例子,那麼他們將會學習不好的做法。 –

相關問題