Je dois afficher la date et l'heure actuelles.
J'ai utilisé; p> Je veux avoir la date et l'heure actuelles (devrait afficher le temps système et pas le temps GMT).
La sortie doit être dans un fichier par exemple; p> nsdate code> format et non
nstring code>. P>
5 Réponses :
Vous avez besoin d'un format NsdateFormatter et appelez StringFromdate cette méthode pour obtenir une chaîne de votre date.
Je ne veux pas émettre le résultat dans la chaîne. Il devrait être nsdate à la place. Et quand j'essaie de le convertir en nsdate (avec datefromstring code>), il me montrera l'heure GMT et non le temps système.
Étant donné que tout Nsdate est mentionné GMT, vous le souhaitez probablement: (N'oubliez pas que la nowdate ne sera pas la date de date actuelle du système, mais elle est "décalée", donc si vous générerez Nstring à l'aide de Nsdateformatter, vous verrez une date incorrecte)
NSDate* currentDate = [NSDate date]; NSTimeZone* currentTimeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; NSTimeZone* nowTimeZone = [NSTimeZone systemTimeZone]; NSInteger currentGMTOffset = [currentTimeZone secondsFromGMTForDate:currentDate]; NSInteger nowGMTOffset = [nowTimeZone secondsFromGMTForDate:currentDate]; NSTimeInterval interval = nowGMTOffset - currentGMTOffset; NSDate* nowDate = [[NSDate alloc] initWithTimeInterval:interval sinceDate:currentDate];
Ainsi, comment peut afficher la date et l'heure actuelle (pas le temps de GMT, mais le temps système)
Si vous devez afficher, vous avez besoin de nstring. Comment affichez-vous l'objet Nsdate?
Je ne vais pas afficher, mais utilisez le nsdate pour effectuer un calcul supplémentaire de la date et de l'heure actuelles.
C'est Terrible i> conseils. Vous ne devriez pas être transférés manuellement des dates pour compenser les fuseaux horaires. Utilisez nsdateformatter code> pour afficher une date dans une zone particulière.
@Jacquescousteau Ce n'est pas un conseil, c'est ce que Sharon a besoin.
Cela me semble être une méthode tout à fait pratique pour bousiller l'ensemble de la date et de la manipulation de temps et de tous les calculs calendrier, car vous sautez à temps au lieu de changer le fuseau horaire. À long terme, ce sera la racine de nombreux problèmes - à coup sûr.
Je suis désolé, mais même si c'est ce qui a été demandé, j'ai bowvote cette réponse. Essayez de parler au questionneur de cette approche, ou du moins avertir i> Autres lecteurs, ils ne veulent pas faire cela. Passer autour d'une date d'heure qui n'est pas ce qu'il semble être est un design fondamentalement horrible. Une solution consiste à transmettre une classe ou une structure avec deux champs (Nsdate, NSTimezone). Si vous devez interagir avec le code hérité qui ne peut pas être adapté, alors oui, vous pourriez avoir besoin d'un convertisseur comme celui-ci. Restreindre l'utilisation du "couché" nsdate à une petite partie de votre code; Utilisez la structure "TIMZONED" ailleurs.
AVANCEZ APPUYÉE, il est très clair que Nsdate State contient une date incorrecte.
Mais s'il vous plaît, aidez-moi à avertir mieux que ce que j'ai fait.
@ToolMakersteve, avez-vous déjà modifié la réponse pour avertir mieux que ce que j'ai fait?
Utilisez cette méthode Cela peut vous renvoyer ce que vous voulez. P> J'espère que vous pouvez vous aider. P> P>
Cela me semble être une méthode tout à fait pratique pour bousiller l'ensemble de la date et de la manipulation de temps et de tous les calculs calendrier, car vous sautez à temps au lieu de changer le fuseau horaire.
Je doute que cela soit correct, car il ne semble pas y avoir de mention de l'heure du système i> (locale actuelle), quelle est la question de la question. (Si cela produise en quelque sorte la sortie souhaitée, comment elle est non intuitive.)
Chaque instant dans le temps est le même moment dans le temps partout dans le monde - il est juste d'être exprimé comme des temps d'horloge différentes dans différents fuseaux horaires. Par conséquent, vous ne pouvez pas modifier la date à une autre date qui représente le temps de votre fuseau horaire; Vous devez utiliser un Tous les calculs nécessaires dans GMT et utilisent simplement un formateur pour afficher. P> nsdateformatter code> que vous vous nourrissez avec le fuseau horaire dans lequel vous vous trouvez. La chaîne résultante est le moment à temps exprimé dans l'heure de votre position. P>
Exactement. Dommage que personne n'a mis de commentaire sur la question initiale, demandant à OP pourquoi i> ils devaient faire ce qu'ils ont dit qu'ils devaient faire - depuis ce qu'ils demandaient est un design terrible i> Compte tenu de la définition de Nsdate comme Timezone-indépendant. Pour obtenir suffisamment d'informations pour suggérer une approche alternative - ou du moins à "contenir le dommage" (Limitez-la à une petite zone de code; transport de fuseau horaire autour d'ailleurs si nécessaire, afin que vous puissiez formater à volonté).
vaut la peine de lire
[Nsdate date] renvoie la date et l'heure locales? a> p>
Certaines ressources utiles pour quiconque arrivent à cela plus récemment: P>
Guide de programmation de la date et du temps Apple Lisez-le si vous faites quelque chose de sérieux avec les dates et les heures.
https://developer.apple.com/library/content/documentation/cocoa/conceptual/datesandtimes/ataatesandtimes.html#/apple_ref/doc/uid/10000039i?Language=OBJC P>
La catégorie utile sur Nsdate avec de nombreux utilitaires permet de générer une nouvelle date à générer sur la base d'une date existante.
https://github.com/erica/nsdate-extensions P>
Il y a aussi une version swift de la catégorie
https://github.com/erica/swiftdates P>
Que veux-tu dire?
[date nsdate] code> vous donnera l'heure actuelle. Qu'est-ce que tu veux?
Il n'y a pas de question ici. [Nsdate Date] retourne la date actuelle!
Je veux obtenir la date et l'heure actuelles. Ex: 2012 23 mai 23h50
[date nsdate] code> retourne la date et l'heure actuelles.
Je sais que. Mais j'en ai besoin pour retourner le temps système et pas le temps GMT.
NSDate a une période de trimestre de la propriété, vous date est GMT Time Plus System Timezone.
Dupliquer de Stackoverflow .com / questions / 10772033 / ...
@netrace:
nsdate code> n'a pas de propriété de ce type.
Comme on l'a demandé, la question est absurde. La demande est destinée à un
nsdate code> dans le fuseau horaire actuel du système i>. Il n'y a pas de tel concept;
nsdate code> est toujours i> b> en UTC. Alors que la réponse acceptée, en quelque sorte, ce qui est demandé, ce qui le fait est une idée terrible i> b>. Ne faites jamais cela - le résultat est une entité qui prétend représenter une heure d'heure, mais représente en réalité une autre. Je ne connais pas assez bien l'IOS pour savoir si cela a depuis ajouté une classe qui porte à la fois une date d'heure et un fuseau horaire; Sinon, vous devriez vous faire votre propre et passer cela.