IBM Lotus Domino, Webservices, date-values, i18n and sloppy programmers

Web Services are a fine thing. They are based on XML, fully specified and work platform-independet – in theory.

If you take a look at the Simple Object Access Protocol (SOAP) 1.1 specification and the XML Schema Part 2: Datatypes specification, a date value passed to or from a Web Service as a very specific and clearly defined format. Please note that IBM worked on both specifications.

A date-value (xsd:date) looks like this: „YYYY-MM-DD”. Four digits representing the year, followed by a dash, followed by two dots for the month, followed by another dash, followed by two digits for the day of the month. Simple! Even a PHP-„programmer” could parse that!

Now, how do Web Services in Lotus Domino 7 cope with that? To demonstrate, I wrote this little Web Service:

1 %INCLUDE "lsxsd.lss"
3 Class i18n
5 Sub NEW
6 End Sub
8 ’ Call this webservice twice! Once with a a day > 12 and once with a day <= 12
9 ’ Notice the difference? ;)
10 Function GetMonthFromDate(parameter As XSD_DATE) As String
11 Dim datetime As NotesDateTime
13 Set datetime = parameter.GetValueAsNotesDateTime()
15 Print "Date: " & Cstr(datetime.DateOnly)
16 Print "Month: " & Cstr(Month(datetime.DateOnly))
18 GetMonthFromDate = "Month: " & Cstr(Month(datetime.DateOnly))
20 End Function
22 End Class

Sweet, isn’t it? And very simple. It takes a date-value as an input and sends a string with the value of the given month back. Easy.

I am using, as defined in the Domino Designer Help, GetValueAsNotesDateTime() to get the date-value a valid NotesDateTime item.

If you call this Web Service eg. with Elvis’ (alleged) death date (1977-08-16), you get the following output:
16.08.2007 15:47:25   HTTP Server: Agent printing: Date: 16.08.1977
16.08.2007 15:47:25   HTTP Server: Agent printing: Month: 8
But if you choose a day value smaller or equal to twelve, e.g. Ian Andersons birthday (1947-08-10), you get:
16.08.2007 15:49:47   HTTP Server: Agent printing: Date: 08.10.1947
16.08.2007 15:49:47   HTTP Server: Agent printing: Month: 10

Do you spot the difference? I get the impression, that the responsible programmer parsed the date into an array, sorted it with bubble sort and took the smallest value as the day, the next one as the month and the largest one as the year. How can such a thing happen?

And before you ask, changing DateOrder in the notes.ini as no effect whatsoever on the Web Service.

Tagged as: , , , , , | Author:
[Freitag, 20070817, 17:16 | permanent link | 1 Kommentar(e)

I did not hear the "PHP-"programmer""! :)

Comments are closed for this story.


„Leyrers Online Pamphlet“ ist die persönliche Website von mir, Martin Leyrer. Die hier veröffentlichten Beiträge spiegeln meine Ideen, Interessen, meinen Humor und fallweise auch mein Leben wider.
The postings on this site are my own and do not represent the positions, strategies or opinions of any former, current or future employer of mine.


RSS Feed RSS Feed

Tag Cloud

2007, a-trust,, a1, accessability, acta, advent, age, amazon, ankündigung, apache, apple, audio, austria, backup, barcamp, bba, big brother awards, birthday, blog, blogging, book, books, browser, Browser_-_Firefox, buch, bürgerkarte, cars, cartoon, ccc, cfp, christmas, cloud, collection, computer, computing, concert, conference, copyright, database, date, datenschutz, debian, delicious, demokratie, design, desktop, deutsch, deutschland, dev, developer, digitalks, dilbert, disobay, dna, dns, Doctor Who, documentation, domino, Domino, Douglas Adams, download, drm, dsk, dvd, e-card, e-government, e-mail, e-voting, E71, Ein_Tag_im_Leben, email, eu, event, exchange, Extensions, fail, feedback, film, firefox, flightexpress, food, foto, fsfe, fun, future, games, gaming, geek, geld, gleichberechtigung, google, graz, grüne, grüninnen, hack, hacker, handtuch, handy, hardware, HHGTTG, history, how-to, howto, hp, html, humor, ibm, IBM, ical, image, innovation, intel, internet, internet explorer, iphone, ipod, isp, IT, it, java, javascript, job, journalismus, keyboard, knowledge, konzert, language, laptop, law, lego, lenovo, life, links, linux, Linux, linuxwochen, linuxwochenende, living, lol, london, lost+found, Lotus, lotus, lotus notes, Lotus Notes, lotusnotes, LotusNotes, lotusphere, Lotusphere, Lotusphere2006, lotusphere2007, lotusphere2008, Lotusphere2008, lustig, m3_bei_der_Arbeit, mac, mail, marketing, mathematik, media, medien, metalab, Microsoft, microsoft, mITtendrin, mobile, mood, movie, mp3, multimedia, music, musik, männer, nasa, netwatcher, network, netzpolitik, news, nokia, Notes, notes, Notes+Domino, office, online, OOXML, open source, openoffice, opensource, orf, orlando, os, outlook, patents, pc, pdf, perl, personal, php, picture, pictures, podcast, politics, politik, pr, press, presse, privacy, privatsphäre, productivity, programming, protest, qtalk, quintessenz, quote, quotes, radio, rant, recherche, recht, release, review, rezension, rss, science, search, security, server, sf, shaarli, Show-n-tell thursday, sicherheit, silverlight, SnTT, social media, software, sony, sound, space, spam, sprache, spö, ssh, ssl, standards, storage, story, stupid, summerspecial, sun, sysadmin, talk, technology, The Hitchhikers Guide to the Galaxy, theme, think, thinkpad, tip, tipp, tools, topgear, torrent, towel, Towel Day, TowelDay, travel, truth, tv, twitter, ubuntu, uk, unix, update, usa, vds, video, videoüberwachung, vienna, Vim, vim, vista, vorratsdatenspeicherung, vortrag, wahl, wcm, web, web 2.0, web2.0, Web20, web20, webdesign, werbung, wien, wiener linien, wikileaks, windows, windows 7, wired, wishlist, wissen, Wissen_ist_Macht, wlan, work, wow, wtf, wunschzettel, Wunschzettel, www, xbox, xml, xp, zensur, zukunft, zune, österreich, övp, übersetzung, überwachung

AFK Readinglist