2012-01-02 11 views
3

可能性の重複:
How do I calculate relative time?DateをString formateに変換する方法は?

私はちょうど例:のための時間や日付をアップロードYouTubeのビデオのような文字列ギに日付値を変換したいです。 2年前または1ヶ月前または8年前のように、私は単純なDateを出力として持つと仮定しています。

ありがとうございます!

+2

いくつかのコードを表示してください...あなたは何を試しましたか?何がうまくいかないの? – Yahia

+0

それは重複しています!返信する必要はありませんでした... – Mzn

答えて

1

私は数年前にこの関数を書いていますが、それはあなたの後ろにあるようです。

public static string GetTimeElpased(int secondsElpased, int minutesElpased, int hoursElpased, 
    int daysElpased, int monthsElpased, int yearsElpased) 
{ 
    if (secondsElpased < 30) 
     return "few seconds ago"; 

    if (minutesElpased < 1) 
     return secondsElpased + " seconds ago"; 

    if (minutesElpased < 5) 
     return "few minutes ago"; 

    if (hoursElpased < 1) 
     return minutesElpased + " minutes ago"; 

    if (hoursElpased < 5) 
     return "few hours ago"; 

    if (daysElpased < 1) 
     return hoursElpased + " hours ago"; 

    if (daysElpased == 1) 
     return "yesterday"; 

    if (monthsElpased < 1) 
    return daysElpased + " days ago"; 

    if (monthsElpased == 1) 
     return "month ago"; 

    if (yearsElpased < 1) 
     return monthsElpased + " months ago"; 

    string halfYear = (monthsElpased >= 6) ? " and half" : ""; 
    if (yearsElpased == 1) 
     return "year" + halfYear + " ago"; 

    return yearsElpased + " years ago"; 
} 

詳細については、もう1つの質問をご覧ください。 (Calculate relative time in C#

+0

ありがとうございました@shadow。 –

0

ここから開始します。 http://msdn.microsoft.com/en-us/library/system.datetime.aspx

http://social.msdn.microsoft.com/search/en-us?query=TimeSpan&x=0&y=0

私はあなたが何をしようとしていることは今と何かが投稿された日付の間の差を決定するためのTimeSpanを使用していると信じています。あなたは結果を使っていくつかの作業をしなければならないでしょうが、異なる時間数/分/日/年を計算できます。

0
+2

私は同じことを書くつもりでしたが、それはOPが本当に後でなかったことに気づいた、彼らはまだ役立つと構造についての情報を与えることができます。しかし、人々はあなたがリンクを貼り付けるだけではいけないので下降します。理由について何らかの説明がなければ、いつも役立つとは限りません。 – Hammerstein

2
DateTime now = DateTime.Now; 

DateTime older = //orignal date time; 

TimeSpan difference = now.Subtract(older); 

あなたは時間のスパンを取得したら、あなたは私はあなたがtimeago algorithimような何かを探しているのだと思い

+0

また、マイナス( - )演算子も使用できます。あなたはSubtract(上に正しく書かれていない)を使う必要はありません。 – Mzn

1

を公開するプロパティの時間スパンクラスを使用して年、月、日などを計算することができます。

詳細について

Calculate relative time in C#

は、以下を参照してください:

あなたが見なければならないstackoverflowの上 同様の質問が、あり

static void Main(string[] args) 
    { 
     Console.WriteLine(GetDifferenceDate(new DateTime(2011, 11, 25, 10, 30, 2), 
      new DateTime(2012, 1, 2, 6, 3, 5))); 
    } 

    static string GetDifferenceDate(DateTime date1, DateTime date2) 
    { 
     if (DateTime.Compare(date1, date2) >= 0) 
     { 
      TimeSpan ts = date1.Subtract(date2); 
      return string.Format("{0} days, {1} hours, {2} minutes, {3} seconds", 
       ts.Days, ts.Hours, ts.Minutes, ts.Seconds); 
     } 
     else 
      return "Not valid"; 
    } 

あなたはこのようなものを使用することができます

http://www.daniweb.com/software-development/csharp/threads/127213

これが役に立ちます。

1

は、現在の日付からの日付をから減算する必要があります。これにより、2つの日付の差を表すTimeSpanの値が得られます。あなたは、あなた自身で読み取り可能なテキストにこのTimeSpanをオンロジックを記述する必要があります。

TimeSpan d = DateTime.Now - someDate; 
if (d.TotalSeconds < 59) 
{ 
    return d.TotalSeconds + " second(s) ago"; 
} 
else if (d.TotalMinutes < 59) 
{ 
    return d.TotalMinutes + " minute(s) ago"; 
} 
else if (d.TotalHours < 23) 
{ 
    return d.TotalHours + " hour(s) ago"; 
} 

// days, weeks, months and years. It's up to you. 
0

私はここにあなたの宿題を解くことが、よように私は感じる:以下は、DateTimeオブジェクトを取る拡張メソッドの例ですこれをDateTime.Nowと比較して、どれくらい前の日付かを適切な記述で返します。

public static class Ext 
{ 
    public static string HowMuchAgo(this DateTime dt) 
    { 
     var difference = (DateTime.Now - dt); 
     if (difference < TimeSpan.FromSeconds(.5)) 
     { 
      return "Just now!"; 
     } 
     else if (difference < TimeSpan.FromMinutes(1)) 
     { 
      return difference.Seconds + " seconds ago."; 
     } 
     else if (difference < TimeSpan.FromHours(1)) 
     { 
      return difference.Minutes + " minutes and " + difference.Seconds + " seconds ago."; 
     } 
     else if (difference < TimeSpan.FromDays(1)) 
     { 
      return difference.Hours + " hours and " + difference.Minutes + " minutes and " + difference.Seconds + " seconds ago."; 
     } 
     else if (difference > TimeSpan.FromDays(1) && difference < TimeSpan.FromDays(2)) 
     { 
      return "Yesterday at " + dt.ToShortTimeString(); 
     } 
     else 
     { 
      return "On " + dt.ToString(); 
     } 
    } 
} 

DateTime.Now.HowMuchAgo​​()を呼び出すと、「今すぐ!」と表示されます。もちろん、これを変更してif文を追加して、記述の細かさを増やしたり、記述に記載されている内容を変更することができます。

関連する問題