3

こんにちは、varchar を datetime に変換するために使用される SQL 関数があります。

IF @dt IS NULL
    SET @dt = GETDATE();

SET @PDate = CONVERT(DATETIME, @PValue + '-' + CONVERT(NVARCHAR(4),YEAR(@dt))); 
IF @PDate > @dt
    SET @Year = YEAR(@dt) - 1;
ELSE
    SET @Year = YEAR(@dt);

RETURN (SELECT CONVERT(DATETIME, @PValue + '-' + CONVERT(NVARCHAR(4),@Year)));

誰かが私を助けることができますか?

の私の値は@PValueです01-APRIL

C# コードで次のように Datetime を宣言するだけです。

DateTime? dt=null;

if(!(dt.HasValue))
    dt=DateTime.Now;

しかし、この後、私は残りを行うのに混乱しました。

4

4 に答える 4

1

適切に変換するために年フィールドを使用できます01-APRILが、有効な日付であることがわかりません。01-APRILいつ?有効な構造化された日時を取得すると、C#コードは次のようになります。

string pValue = @"01/04";
DateTime dt = new DateTime();
DateTime now = DateTime.Now;
pValue += string.Format(@"/{0}", now.Year);
int year = 0;
if (DateTime.TryParse(pValue, ref dt))
{
  if (dt > now)
    year = dt.Year -1
  else
    year = dt.Year;
}
于 2013-03-14T10:50:59.880 に答える
0

以下のようなもの

DateTime? dt = null;
        int pYear = 2012; // assuming pYear is getting populated from somewhere
        int finalYear = 1900; // initilizing some value to it;
        if (!(dt.HasValue))
            dt = DateTime.Now;
        var year = dt.Value.Year;
        var pValue = "1-Apr";
        if (pYear > year)
            finalYear = pYear - 1;
        else
        {
            finalYear = year;
        }

        return pValue + finalYear.ToString();
于 2013-03-14T10:57:23.053 に答える
0

文字列を日付に変換する場合は、DateTime.Parseメソッドを使用する必要があります。おそらく、パラメーターをstringではなくとして宣言する必要がありますDateTime?

于 2013-03-14T10:50:02.120 に答える
0

DateTime.Parseまたはを呼び出すだけDateTime.ParseExactで、実装にバグがあるため、日付を自分で解析しないでください。それは、死や税金と同じように、人生の確実なものの 1 つです。

現在のロケールが英語 (英国) ではなく英語 (米国) である場合、 aを使用し、必ず指定しないParse場合は、別の方法で解析されます。ParseExactCultureInfo03/06/99

于 2013-03-14T10:51:14.247 に答える