I recently had to create a reasonably meaningful batch number for some GS1 compliant SSCC labels.
I have an Internet Explorer Interface that submits the request to our ERP system.
Due to legacy issues the batch number was restricted to 6 numeric digits. Some colleagues and I ended up coming up with a format of:
Where Y is the right most digit of the current year (2009 = 9)
Where OOO is the zero filled ordinal day of the year (January 1 = 001 , 15 June 2009 = 166)
And BB is a user interface selected 2 digit batch no. (01, 02, 0x – 99)
To get the Ordinal Day of the year was an excercise in Googling. Here is the algorithm I found embedded in someones html page… Sadly I can’t attribute because I can’t seem to Google back to it. So if it’s yours let me know and I will.
VBScript Ordinal Date
myDate = Date days = Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) ' now calc date y = year(myDate) ' array is zero based so make ' the month the same 0 = jan, 1 = feb etc m = month(myDate) - 1 d = day(myDate) ' find out if it's a Leap Year if ( 0 = y mod 4 ) then ' add one day to february if it's a leap yr days(1) = days(1) + 1 end if for i = 0 to m - 1 ' if june you need to add the first 5 months totals myDays = myDays + days(i) next 'then add the final months day value myDays = myDays + d msgbox "Date : " & date & vbcrlf & "Ordinal Days : " & myDays