Datetime conversion et l'analyse
Mon code donne l'erreur suivante: chaîne d'Entrée n'était pas dans un format correct.
avec cette astuce:
Lors de la conversion d'une chaîne de type DateTime, analyser la chaîne de prendre la date avant de placer chaque variable dans l'objet DateTime
Ci-dessous mon code:
(Édité pour ne montrer que les problématiques de code)
string username ="aits";
string password = "12345";
Int32 intresortid=7;
string strPartySurname = "Kumar"; ;
string strPartyFirstName = "Test";
string strPartyPrefix = "Mr & Mrs";
Int16 intQtyAdults=1;
Int16 intQtyTotal=1;
string PromotionCode = "TIF";
string flightNO = "FlighDJ76";
string strNotes = "<nl>Provide Breakfast<nl>Honeymooners";
try
{
string url = string.Format("http://localhost/insHold.asp?username={0}&password={1}&intresortid={2}&strPartySurname={3}&strPartyFirstName={4}&strPartyPrefix={5}&intQtyAdults={6}&intQtyTotal={7}&dtmLine1={8:yyyy-MM-dd}&strRoomType1={9}&intRooms1={10}&intnights1={11}&strFlightNo={12}&strNotes={13}&strBookingCode={14}&strPromotionCode={15}", username, password, intresortid, strPartySurname, strPartyFirstName, strPartyPrefix, intQtyAdults, intQtyTotal, CheckInDate, BBRoom, RoomQty, NoofNights, flightNO, strNotes, ResBookingID, PromotionCode);
WebRequest request = HttpWebRequest.Create(url);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string urlText = reader.ReadToEnd();
bookid = Convert.ToInt16(urlText);
}
catch (System.ApplicationException ex)
{
throw ex;
}
Je ne sais pas comment corriger ce que ma valeur DateTime: CheckInDate est déjà de type date.
Quelqu'un peut-il me dire comment résoudre ce problème ou me diriger dans la bonne direction.
Qui ne compile pas. Manque des guillemets ou un new DateTime()?
Consultez édité CheckInDate
Je ne reçois pas de vous..Que voulez-vous dire?
Consultez édité CheckInDate
Je ne reçois pas de vous..Que voulez-vous dire?
OriginalL'auteur user1270384 | 2012-09-14
Vous devez vous connecter pour publier un commentaire.
Je viens de réécrire la chaîne de format et il résout le problème. Constaté que la réécriture des accolades { } résolu. Merci d'essayer.
Désolé, mais cette réponse est inutile sans code.
OriginalL'auteur Samy
essayez de faire cela comme
plus peut être trouvé ici http://www.dotnetperls.com/datetime
vous pouvez également convertir la chaîne de datetome mais vous devez vérifier à l'avance la la chaîne est la date
vous pouvez également utiliser analyser
voir la modifier
Consultez édité et ajouté CheckInDate
OriginalL'auteur COLD TOLD
Vous avez 15 spécificateur de format dans le format de votre chaîne, mais seulement 14 paramètres. À moins que j'ai manqué, votre chaîne de format n'est pas valide.
Autant que la date, vous n'avez pas montré comment vous avez obtenu
ckDate
, si c'est unstring
avec la date en elle, ou est-il unDateTime
. Aussi, à partir de la liste des paramètres, ressembleckDate
est mappé à quelque chose qui est appelé "intQuantityTotal
".Si
ckDate
est une chaîne de caractères, puis utilisezDateTime.TryPrase
méthode pour convertir DateTime réelle.Si vous êtes à la conversion de chaîne de caractères, en supposant que votre date d'entrée est dans une variable chaîne de caractères appelée "
inputDate
":Votre chaîne de format pour CheckInDate est défini comme dtmLine1={8:aaaa-MM-jj}. Ce spécificateur de format n'est valable que pour un type de données DateTime. Quel est le type de données de CheckInDate? Vous n'avez pas montré que la partie du code. Est CheckInDate objet DateTime ou est-il une chaîne de caractères? A mon avis, c'est une chaîne et que vous essayez d'appliquer un format DateTime chaîne.
Son censé être de type Datetime, mais il donne toujours une erreur, même si je le prends comme une chaîne de caractères puis de le convertir en datetime avant de l'appeler dans la dtmLine1 paramètre je reçois la même erreur. CheckInDate est entré par l'utilisateur
Vérifiez en bas de mon post édité. J'ai ajouté le code qui peut vérifier si votre chaîne est parse-mesure.
OriginalL'auteur loopedcode
Essayez d'utiliser
DateTime.ParseExact Méthode
mon code deviendrait quelque chose comme ceci: DateTime.ParseExact(CheckInDate, "aaaa-MM-jj", CultureInfo.InvariantCulture); mais donne une erreur de trop d'arguments
quelle est la valeur de
CheckInDate
, et quel est le format?comme vous pouvez le voir
yyyy-MM-dd
est le format des valeurs saisies. si par exemple vous avez entréJAN-01-2012
le format doit êtreMMM-dd-yyyy
vous devez ajouter l'espace de noms de la culture:
System.Globalization.CultureInfo.InvariantCulture
OriginalL'auteur John Woo
Je vous conseille d'utiliser DateTimes constructeur, si possible, et de ne pas s'embêter avec la conversion de chaînes dates.
Si vous souhaitez démarrer à partir d'une chaîne, vous devez utiliser les variations de DateTime.Analyser
La chose la plus simple serait de travailler:
afin de spécifier explicitement le format de la date utilisation
DateTime.ParseExact
Puisque vous avez mentionné que la date de chaîne est entré par l'utilisateur, je suppose que vous voulez une boucle de rétroaction dans le cas où l'utilisateur entre une malformé date. Dans ce cas, vous devez utiliser DateTime.TryParse
oui, voir mon edit s'il vous plaît.
Consultez édité et ajouté CheckInDate
Oui, il ne compile pas, il donne l'erreur mentionné ci-dessus c'est pourquoi j'ai posté la question et il ne peut pas être la chaîne de CheckInDate parce que le CheckIndate de la valeur d'un service web qui n'accepte que le format Datetime.
J'ai complètement perdu la trace de ce que vous essayez de faire.. merci de poster l'ensemble de la problématique de code de l'échantillon, mais seulement la problématique de la partie. Dans l'exemple ci-dessus, il y a beaucoup de bruit.
OriginalL'auteur Vitaliy
loopedcode réponse est probablement la droite: vous n'avez pas de paramètre pour la strpartyprefix spécificateur de format.
En outre, vous devez explicitement format
ckDate
dans le format attendu parholdbooking.asp
. C'est probablement ce qui doit être une culture de l'invariant de format.E. g. si
holdbooking.asp
est attend à 'aaaa-MM-jj', puis remplacezpar:
OriginalL'auteur Joe