2011-09-14 2 views
-1

J'utilisais cette méthode dans le code derrière C# .net. Je passerais la date récupérée de la base de données dans le paramètre de cette méthode et ensuite obtenir la date écrite au format informel. Maintenant, ce qui se passe est que je dois mettre en œuvre la même chose dans mon code jquery etJ'ai besoin d'implémenter cette méthode C# en javascript. Besoin d'aide s'il vous plaît

J'ai besoin d'utiliser cette fonction là. Dans mon fichier JavaScript, je reçois la date sous forme de chaîne. Maintenant, le problème est que je n'ai aucune idée de la façon de convertir la chaîne de theat en une date! Puis hpw devrais-je utiliser cette date et la transmettre à cette fonction? Ensuite, faites des conversions par exemple ceci ..... (int) s.TotalSeconds; Donnez-moi quelques idées sur la façon dont je peux mettre en œuvre ce que je veux. Je suis nouveau à JQuery et d'autres choses.

static string GetInformalDate(DateTime d) 
     { 
      // 1. 
      // Get time span elapsed since the date. 
      TimeSpan s = DateTime.Now.Subtract(d); 

      // 2. 
      // Get total number of days elapsed. 
      int dayDiff = (int)s.TotalDays; 

      // 3. 
      // Get total number of seconds elapsed. 
      int secDiff = (int)s.TotalSeconds; 

      // 4. 
      // Don't allow out of range values. 
      if (dayDiff < 0) 
      { 
       return null; 
      } 

      // 5. 
      // Handle same-day times. 
      if (dayDiff == 0) 
      { 
       // A. 
       // Less than one minute ago. 
       if (secDiff < 60) 
       { 
        return "Just Now"; 
       } 
       // B. 
       // Less than 2 minutes ago. 
       if (secDiff < 120) 
       { 
        return "1 minute ago"; 
       } 
       // C. 
       // Less than one hour ago. 
       if (secDiff < 3600) 
       { 
        return string.Format("{0} minutes ago", 
         Math.Floor((double)secDiff/60)); 
       } 
       // D. 
       // Less than 2 hours ago. 
       if (secDiff < 7200) 
       { 
        return "1 hour ago"; 
       } 
       // E. 
       // Less than one day ago. 
       if (secDiff < 86400) 
       { 
        return string.Format("{0} hours ago", 
         Math.Floor((double)secDiff/3600)); 
       } 
      } 
      // 6. 
      // Handle previous days, months and years. 
      if (dayDiff == 1) 
      { 
       return "Yesterday"; 
      } 
      if (dayDiff < 7) 
      { 
       return string.Format("{0} days ago", 
       dayDiff); 
      } 
      if (dayDiff < 31) 
      { 
       return string.Format("{0} week(s) ago", 
       Math.Ceiling((double)dayDiff/7)); 
      } 
      if (dayDiff < 365) 
      { 
       return string.Format("{0} month(s) ago", Math.Ceiling((double)dayDiff/31)); 
      } 
      else 
      { 
       return string.Format("{0} year(s) ago", Math.Ceiling((double)dayDiff/365)); 
      } 

      return null; 
     } 

@ IAbstractDownvoteFactory :: Je suis dans ce salon de discussion. pouvez-vous s'il vous plaît venir si votre aide encore here..waiting..need mal :(

Est-ce qu'il ya quelqu'un d'autre qui peut me aider ?? s'il vous plaît

+1

Si vous utilisez jQuery, vous voudrez peut-être regarder ce plugin à la place: http://timeago.yarp.com/ - doit être facile à adapter pour correspondre à la sortie du code ci-dessus –

+0

'(int) s.TotalSeconds' équivalent à javascript:' + (s.TotalSeconds) ' – Jack

+1

Qu'est-ce que" unformal "? Voulez-vous dire "informel"? – nnnnnn

Répondre

1

Example

function GetUnformalDate(d) { 
    // 1. 
    // Get time span elapsed since the date. 
    var s = new Date().getTime() - d.getTime(); 

    // 2. 
    // Get total number of days elapsed. 
    var dayDiff = (s/86400000) | 0; 

    // 3. 
    // Get total number of seconds elapsed. 
    var secDiff = s/(1000); 

    // 4. 
    // Don't allow out of range values. 
    if (dayDiff < 0) { 
     return null; 
    } 

    // 5. 
    // Handle same-day times. 
    if (dayDiff == 0) { 
     // A. 
     // Less than one minute ago. 
     if (secDiff < 60) { 
      return "Just Now"; 
     } 
     // B. 
     // Less than 2 minutes ago. 
     if (secDiff < 120) { 
      return "1 minute ago"; 
     } 
     // C. 
     // Less than one hour ago. 
     if (secDiff < 3600) { 
      return Math.floor(secDiff/60) + " minutes ago"; 
     } 
     // D. 
     // Less than 2 hours ago. 
     if (secDiff < 7200) { 
      return "1 hour ago"; 
     } 
     // E. 
     // Less than one day ago. 
     if (secDiff < 86400) { 
      return Math.floor(secDiff/3600) + " hours ago"; 
     } 
    } 
    // 6. 
    // Handle previous days, months and years. 
    if (dayDiff == 1) { 
     return "Yesterday"; 
    } 
    if (dayDiff < 7) { 
     return dayDiff + " days ago"; 
    } 
    if (dayDiff < 31) { 
     return Math.ceil(dayDiff/7) + " week(s) ago"; 
    } 
    if (dayDiff < 365) { 
     return Math.ceil(dayDiff/31) + " month(s) ago"; 
    } 
    else { 
     return Math.ceil(dayDiff/365) + " year(s) ago"; 
    } 

    return null; 
} 

Comme fpr date chaîne, nous devons analyser que:

var digits = "29-07-2011 12:51:33".match(/\d+/g); 
var date = new Date(digits[2], digits[1], digits[0], digits[3], digits[4], digits[5]) 
+0

il ressemble à ceci 29-07-2011 12:51:33 – Infinity

+0

Sur ma page il donne cette erreur: - d.getTime n'est pas une fonction. Quel pourrait être le problème? – Infinity

+0

Avez-vous changé la date à votre chaîne? – Joe

Questions connexes