avatar
Today is Friday
October 18, 2019

Search Results Archives: September 2007

September 11, 2007

Nederlandse tijd en datum opvragen op buitenlandse server

by tsnoei — Categories: Uncategorized — No Comments - Afdrukken Afdrukken

Begin_CEST_Transparent.pngStel je wilt de Nederlandse tijd en datum weergeven onafhankelijk van het systeem waar je software op draait. Onderstaande class “nlDateTime” biedt dan een oplossing. De code houd rekening met DST (Daylight Saving Time = zomertijd).

In feite wordt de door het systeem geretourneerde tijd eerst omgezet naar UTC (Universal Time Coordinated) ook wel GMT genaamd. Vervolgens wordt er vastgesteld of we in europese zomertijd of wintertijd leven. Zomertijd gaat in op de laatste zondag van maart. Wintertijd gaat in op de laatste zondag van oktober.

<code>
using System;
using System.Text;

namespace PageGrabber.BusinessLogic
{
    public abstract class nlDateTime
    {
        ///

        /// Returns dutch datetime. Checking DST also.
        /// 

        public static DateTime Now
        {
            get
            {
                DateTime DateTimeNow = DateTime.Now;
                DateTime DateTimeNowUTC = DateTimeNow.ToUniversalTime();

                DateTime result;
                if (IsSummerTime(DateTimeNowUTC))
                    result = DateTimeNowUTC.AddHours(2);
                else
                    result = DateTimeNowUTC.AddHours(1);

                //Convert from utc to local
                return new DateTime(result.Year, result.Month, result.Day, result.Hour, result.Minute, result.Second, result.Millisecond, DateTimeKind.Local);
            }
        }

        public static DateTime StartOfEUSummerTimeUtc(int Year)
        {
            int Day = (31 - (((5 * Year) / 4) + 4) % 7);
            return new DateTime(Year, 3, Day, 1, 0, 0, 0, DateTimeKind.Utc);
        }

        public static DateTime EndOfEUSummerTimeUtc(int Year)
        {
            int Day = (31 - (((5 * Year) / 4) + 1) % 7);
            return new DateTime(Year, 10, Day, 1, 0, 0, 0, DateTimeKind.Utc);
        }

        public static bool IsSummerTime(DateTime DateTimeUtc)
        {
            if (DateTimeUtc >= StartOfEUSummerTimeUtc(DateTimeUtc.Year) &&
                DateTimeUtc < EndOfEUSummerTimeUtc(DateTimeUtc.Year))
                return true;
            else
                return false;
        }
    }
}
</code>

September 4, 2007

Fonetisch (“klinkt als”) zoeken

by tsnoei — Categories: Uncategorized — No Comments - Afdrukken Afdrukken

loep.jpg‘t is al weer even geleden na een heerlijke vakantie in Frankrijk hoop ik weer wat frequenter artikeltjes te plaatsen.

Misschien herken je het probleem. Je wilt zoeken op een persoon met een bepaalde naam maar was het nu “Kees” of “Cees” en Janssen, Jansen, Jensen of Johnson. Dit probleem is op te lossen met een fonetisch zoek algoritme. Er zijn genoeg bedrijven die hier in het bijzonder in zijn gespecialiseerd. Als “arme” developer moet je dan echter je baas zover zien te krijgen met zo’n partij in zee te gaan en dat is voor simpele zaken als een intranet zoekfunctie niet altijd haalbaar. Geen nood, ik kwam er achter dat er meerder open source algoritmen bestaan voor dit probleem. Een van de betere tot nu toe is het zogenaamde Double Metaphone algoritme van Lawrence Phillips.

De werking komt in feite neer op het vastleggen van een fonetische primaire en een alternatieve sleutel voor een bepaald woord. Deze sleutel is maximaal 4 karakters lang en bestaat alleen uit medeklinkers. Zo is de primaire sleutel van de naam “Snoei”, “SN” en de alternatieve sleutel “XN”. De namen “Snoo”, “Snoeij” en “Snoey” hebben exact dezelfde sleutels en worden bij het fonetisch zoeken ook als resultaat meegenomen. De sleutel van een woord kunnen via het algoritme van Lawrence razendsnel worden vastgesteld. Een praktische implementatie zou zijn dat je in een database voor elk te zoeken woord de fonetische sleutels vaststeld. Bij het daadwerkelijk zoeken worden de fonetische sleutels vastgesteld van de zoekterm en deze worden middels een query tegen de database aangehouden.

Meer over de werking van het algoritme is te vinden het 6-delige artikel Implement Phonetic (“Sounds-like”) Name Search With Double Metaphone. In dit artikel worden een aantal implementaties ter beschikking gesteld voor ASP, VB Script, C++ maar ook voor C# verder zijn er diverse interessante links te vinden met betrekking tot fonetisch zoeken.

© 2019 Snoei's .NET blog All rights reserved - Wallow theme v0.44 by ([][]) TwoBeers - Powered by WordPress - Have fun!