C Programme pour trouver la date du jour de la semaine
Est-il un moyen de savoir le jour de la semaine date donnée en une seule ligne de code C?
Par exemple
Donné 19-05-2011(jj-mm-aaaa) me donne jeudi
source d'informationauteur theReverseFlick
Vous devez vous connecter pour publier un commentaire.
Un one-liner est peu probable, mais la la fonction strptime peut être utilisé pour analyser votre format de la date et de l'
struct tm
argument peut être interrogé pour sestm_wday
membre sur les systèmes de modifier ces champs automatiquement (par exemple, certains glibc implémentations).Ou vous pouvez encoder ces règles ne arithmétique dans un très long seule ligne:
EDIT: noter que cette solution ne fonctionne que pour les dates après l'époque UNIX (1970-01-01T00:00:00Z).
Comme l'a rapporté aussi par Wikipediaen 1990, Michael Keith et Tom Craver publié une expression de minimiser le nombre de frappes nécessaires pour entrer dans une auto-contenue fonction pour convertir une date Grégorienne en numérique les jours de la semaine.
L'expression ne conserver ni
y
nid
et retourne un index de base zéro qui représente le jour, à commencer par le dimanche, c'est à dire si le jour est lundi, l'expression renvoie1
.Un exemple de code qui utilise l'expression suivante:
L'expression utilise le opérateur virguletel que discuté dans cette réponse.
Profitez-en! 😉
Voici un C99 version basée sur l'article de wikipedia à propos de Julian Jour
Par la suppression de l'épissage et les espaces de la
return
ligne dans le logiciel wd() la fonction, il peut être compactée à un 286 caractère unique de la ligne 🙂Edit: la version 2 (3 lignes) --- éviter d'éventuelles complications de retourner un élément d'une auto de tableau, en le rendant statique.
C'est mon œuvre. C'est très court et comprend la vérification d'erreur. Si vous voulez des dates avant 01-01-1900, vous pouvez facilement changer le point d'ancrage à la date de début du calendrier Grégorien.
La réponse je suis venu avec:
avec ces définit (correspondant à
struct tm
detime.h
):De SORTIE:
Entrez l'année 2012
Entrez le mois, le 02
Entrez la date 29
Date: 29/2/2012
jour de la semaine = mercredi
Super Efficace Une ligne de Code C pour Trouver le Jour de la Semaine
Source- ici ↗
Détails- ici ↗
Je pense que vous trouverez que dans glib:
http://developer.gnome.org/glib/unstable/glib-Date-and-Time-Functions.html#g-date-get-day
Ce qui concerne
Celui-ci fonctionne: j'ai pris janvier 2006 comme référence. (C'est un dimanche)
int isLeapYear(int year) {
int isDateValid(int jj,mm int,int aaaa) {
int calculateDayOfWeek(int jj,mm int,int aaaa) {
Voici un code simple que j'ai créé en c qui devrait résoudre votre problème :
Pour le Jour de la Semaine, les années 2000 - 2099.
Pas en une seule ligne de code, il n'y a rien pour traiter avec des dates dans la bibliothèque C standard. Il serait assez simple d'écrire une fonction sur la base du jugement dernier algorithme, ou similaire, bien qu'.
}