PHP obtenir le numéro de la semaine pour le mois
J'ai donc un script qui renvoie le nombre de semaines dans un mois et l'année. Comment puis-je prendre un jour de ce mois et de déterminer si elle est une partie de la semaine 1,2,3,4 ou 5 de ce mois?
- Avez-vous seulement un jour ou est-il un jour avec un jour et de l'année?
- C'est un jour avec un jour et de l'année
- il sera préférable de renommer le sujet de cette question: sera mieux de trouver le numéro de semaine d'une journée dans un mois!
- Si vous êtes nouveau à cette question, veuillez vous envisagez de ce one-liner avant d'utiliser l'une des fonctions.
Vous devez vous connecter pour publier un commentaire.
Le plus frustrant que j'ai jamais essayé de se mettre au travail, mais c'est tout!
Edit: autant pour "une seule ligne" - variables nécessaires pour éviter recalcul avec le conditionnel. Jeté dans un argument par défaut alors que j'étais à elle.
Veuillez noter que
weekOfMonth(strtotime('Oct 31, 2011'));
sera de retour6
; quelques rares mois de 6 semaines en eux, contraire à l'OP de l'attente. Janvier 2017 est un mois avec 6 ISO semaines - dimanche 1er tombe dans la dernière année de la semaine, car les ISO les semaines commencent le lundi.Pour starshine531, de retour d'un
0
indexé semaine, du mois, de changer lereturn 1 +
àreturn 0 +
oureturn (int)
.Pour Justin Stayton, pour les semaines commençant le dimanche au lieu du lundi, je voudrais utiliser
strftime('%U'
au lieu dedate('W'
, comme suit:Pour cette version, 2017-04-30 est maintenant à la semaine 6 avril, alors que 2017-01-31 est maintenant en semaine 5.
W
utilise le lundi comme le début de la semaine, donc cela ne fonctionnera pas si vous utilisez le dimanche comme le début de la semaine.((int) strftime("%U", $day)) - ((int) strftime("%U", strtotime(date('Y-m-01', $day)))) + 1
puis, si je n'ai pas testé beaucoup.date("W", strtotime('2017-01-01))
retourne52
. Je vais devoir ajouter un chèque pour le mois de janvier, depuis des jours peut tomber dans la dernière semaine de l'année précédente. Ne pouvez pas utiliser la simple arithmétique modulaire en raison de "saut semaines", soit: en.wikipedia.org/wiki/ISO_week_date. Je vais le mettre à jour dans les prochains jours.Bonjour à tous, j'ai été mal toute la journée à essayer de comprendre ce code, j'ai enfin compris alors j'ai pensé que je voudrais partager avec vous tous.
tout ce que vous devez faire est de mettre un horodatage dans la fonction et il sera de retour le numéro de la semaine de nouveau à vous.
grâce
il y a un problème avec cette méthode. si le passage de la date (disons 2012/01/01 qui est un dimanche) et "$rollover" de la journée est "dimanche", cette fonction retournera 2. où ses fait est 1 st semaine. je pense que j'ai fixé en fonction suivante.
veuillez ajouter des commentaires à faire mieux.
C'est une solution basée sur sberry de la solution mathématique, mais en utilisant le PHP DateTime classe à la place.
Il suffit de Copier et Passé le code et passer le mois et l'année.
e.g mois=04 année=2013.
C'est exactement ce dont Vous avez Besoin.
De SORTIE:
C'est le bout de code que j'ai fait pour répondre à mes besoins pour le même. Espérons que cela vous aidera.
}
Je crois que j'ai trouvé une solution élégante
Pour un lundi-dimanche (ISO 8601) semaine (ou, si vous ne vous occupez pas de), vous pouvez le faire en une seule ligne:
(Source)
Pour quoi que ce soit d'autre, (par exemple un dimanche-samedi de la semaine), vous avez juste besoin d'ajuster $date à l'intérieur de la fonction:
(Grâce à ces gars et les filles)
REMARQUE: Vous pouvez exécuter certaines questions à la fin de l'année (par exemple autour de 12/31, 1/1, etc.). En lire plus ici.
Ce n'est probablement pas une bonne façon de faire cela, mais c'est ma première pensée, et je suis vraiment fatigué.
Mettre toutes vos données dans un tableau. La date objet doit avoir un nom de jour (lundi). Créer une méthode qui permet de rechercher le tableau et quand vous frappez un dimanche, vous ajoutez 1 à une semaine de compteur. Une fois que vous trouver la date vous êtes à la recherche pour le retour de la semaine à guichet. C'est la semaine de la journée de la tombe de l'année. Pour la semaine dans le mois, vous devez réinitialiser la semaine contre chaque fois que vous obtenez le dernier jour de chaque mois.
Vient ici deux liner:
Et Wtower solutions ne fonctionnent pas à 100% correctement.
Pensé que je devais partager ma fonction en tant que bien. Cette fonction retourne un tableau de semaines. Chaque semaine est un tableau avec des semaines de la journée (0..6) comme la clé et mois jour (1..31) en tant que valeur.
Fonction suppose que la semaine commence avec le dimanche.
Profitez-en!
Mes 5 cents:
J'ai créer cette fonction, à partir du brésil 🙂 j'espère que c'est utile
J'ai trouvé un moyen facile de déterminer ce que la semaine du mois aujourd'hui, et ce serait un petit changement pour qu'il fonctionne sur une autre date. Je vais ajouter mon grain de sel ici car je pense que mon chemin est beaucoup plus compact ensuite l'une des méthodes indiquées.
et $ddate contient le numéro de la semaine vous pouvait le modifier comme
et il serait de retour que la semaine du mois pour la date que vous donnez, il est.
ce qu'il fait est d'abord trouver le nombre de jours depuis le début de la semaine pour le premier du mois. puis il ajoute qu'à la date actuelle se divise alors la nouvelle date 7 et qui va vous donner combien de semaines se sont écoulées depuis le début du mois, y compris une décimale pour la partie du courant de la semaine qui vient de passer. donc ce que je vais faire est arrondir ce nombre, puis de comparer les arrondis à la baisse de la version à l'originale si les deux correspondent à vos à la fin de la semaine donc c'est déjà dans le nombre. si ils ne pas simplement ajouter l'un à l'arrondi du nombre et voila vous avez le numéro de la semaine actuelle.
Srahul07 la solution fonctionne parfaitement... Si vous de respecter le lundi-dimanche du système de la semaine! Ici, dans " murcia, non-business folk ont tendance à passer par dimanche-samedi cours d'une semaine, donc le 1er Mai 2011 est la semaine 1, et le 2 Mai 2011, est toujours de la semaine 1.
Adjonction de ce qui suit la logique jusqu'au fond de sa fonction, juste avant qu'il ne retourne $la semaine de la conversion de ce dimanche -> lundi système:
Python: Numéro de la Semaine dans un Mois
C'est un exemple en Python - doit être simple pour convertir.
Après beaucoup de efoort j'ai trouvé la solution
J'ai vraiment aimé @michaelc de réponse. Cependant, j'ai coincé sur quelques points. Il semblait que chaque fois dimanche roulé autour, il y avait un décalage de un. Je pense que cela a à voir avec ce que le jour de la semaine est le début de la semaine. En tout cas, voici ma légère altération, se développa un peu pour des raisons de lisibilité:
Donc, si la date est Nov. 9, 2013...
et avec le décalage de 1, elle renvoie correctement 2.
Si la date est Nov. 10, 2013,
$cw
et$fw
sont les mêmes qu'avant, mais le décalage est de 2, et il renvoie correctement 3.weekOfMonth
qui commence le dimanche à la place. Notez que si vous voulez juste la semaine de l'année avec un dimanche de base,(int) strftime("%U", $time)
fonctionne tout aussi bien que quelque chose de plus complexe.J'ai trouvé cette ligne:
http://kcwebprogrammers.blogspot.de/2009/03/current-week-in-month-php.html
Il a une solution très simple qui semble bien fonctionner pour moi.
Ainsi, par exemple:
vous pouvez utiliser W dans les nouvelles versions de php. http://php.net/manual/en/function.date.php
je l'ai utilisé comme:
Court et à toute épreuve:
- Je utiliser cette fonction simple:
si je comprends correcte, la question est de savoir comment identifier ce numéro de la semaine dans le mois de la journée... j'étais à la recherche de solution similaire. J'ai utilisé quelques idées de réponses ci-dessus, à développer ma propre solution. Espérons qu'il pourra être utile pour quelqu'un. Si Oui, alors UpVote ma réponse.
L'Utilisation De Carbone:
Si de toute évidence, vous voulez séparer d'un mois en 4 Semaines, vous pouvez utiliser cette fonction.
C'est utile, si vous voulez
Ici nous allons
De carbone:
Aussi simple que possible 🙂