我已經填充的組合框與格式幾個月和幾年:如果月份是單詞,我可以獲得日期時間嗎?
August 2014
July 2014
June 2014
在選擇(比方說,2014年7月),我非常喜歡創造格式爲DateTime變量'01/7月14日」。有一種方法需要一個月,目前是一個字符串,並轉換爲一個整數?
非常感謝您的時間。
我已經填充的組合框與格式幾個月和幾年:如果月份是單詞,我可以獲得日期時間嗎?
August 2014
July 2014
June 2014
在選擇(比方說,2014年7月),我非常喜歡創造格式爲DateTime變量'01/7月14日」。有一種方法需要一個月,目前是一個字符串,並轉換爲一個整數?
非常感謝您的時間。
有沒有一種方法可以取一個月爲目前的字符串並轉換爲整數?
是的。循環搜尋匹配的可能名稱:
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;
這裏是我的簡單示例如何獲取月份編號。
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;
與此有關的一些問題。首先,函數不應該是一種形式的方法。這是錯誤的級別。其次,函數並不總是設置返回值。第三,你重複月份名稱而不是使用內置值。第四,你的比較是區分大小寫的。 Zam寫的答案超出了你的回答,這並不明顯。 –
這只是一個例子。爲此目的,不管這是一種方法還是功能。你對大小寫敏感。我還添加了返回結果。關於Zam的回答,我沒有看到它。對不起。 –
這確實很重要,不管這是一種形式的方法,還是以可重用的方式暴露。通過將其作爲表單的一種方法,您可以向顯然仍在學習的開發人員展示一個示例。如果開發者遵循你的例子,那麼他們將會學習不好的做法。 –
是的,有很多方法可以做到這一點 –
目前我打算用空間分割字符串給我「月」和「2014」,然後通過LongMonthNames迭代,直到我打了一個月的比賽。只是檢查是否有更有效的方法。 –
從您發佈的內容看,似乎沒有更有效的方法。沒有看到填充ComboBox的實際代碼很難說。 –