ASP Code
  Home arrow ASP Code arrow Format Date/Time Function - fmtDateTime() ...
ASP Free Forums 
.NET  
ASP  
ASP Code  
ASP.NET  
ASP.NET Code  
BrainDump  
C#  
Code Examples  
Database  
Database Code  
IIS  
Microsoft Access  
MS SQL Server  
Silverlight  
Visual Basic.NET  
Windows Scripting  
Windows Security  
XML  
Mobile Linux 
App Generation ROI 
IBM® developerWorks 
ASP Web Hosting  
ASP.NET Web Hosting 
Windows Web Hosting
 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us Get Paid 
Request Media Kit
Contact Us 
Site Map 
Privacy Policy 
Support 
 USERNAME
 
 PASSWORD
 
 
  >>> SIGN UP!  
  Lost Password? 
ASP CODE

Format Date/Time Function - fmtDateTime() by Kevin Turner
By: aspfree
  • Search For More Articles!
  • Disclaimer
  • Author Terms
  • Rating: 5 stars5 stars5 stars5 stars5 stars / 19
    2001-07-21

    Table of Contents:

    Rate this Article: Poor Best 
      ADD THIS ARTICLE TO:
      Del.ici.ous Digg
      Blink Simpy
      Google Spurl
      Y! MyWeb Furl
    Email Me Similar Content When Posted
    Add Developer Shed Article Feed To Your Site
    Email Article To Friend
    Print Version Of Article
    PDF Version Of Article
     
     
    ADVERTISEMENT


    Format Date/Time Function - fmtDateTime()
     
    This function was created to compensate for the poor date and time formatting capabilities available to the ASP (VBScript) developer. FormatDateTime() just doesn't cut it! This function is analgous to the Format() function in the Visual Basic world.
     
    The function takes two parameters:
    1. A valid date object
    2. A formatting string such as 'mm-dd-yyyy'
     
    Usage:
     
    The first parameter can be a Variant Date object or an expression that evaluated to Variant Date object. The second parameter is a Variant String composed of the following date and time tokens:
     
    Date Parts
    • yy - year value, 2-digits
    • yyyy - year value, 4-digits
    • m - month value (1 to 12), not zero-padded
    • mm - month value (1 to 12), zero-padded
    • d - day value (1 to 31), not zero-padded
    • dd - day value (1 to 31), zero-padded
    Time Parts
    • h - hours value, not zero-padded
    • hh - hours value, zero-padded
    • m or mm - minutes value, always zero-padded
    • s or ss - seconds value, always zero-padded
    Acceptable time delimiters:
    • colon (:)
    Acceptable date delimiters:
    • forward slash(/)
    • hyphen (-)
    If you to use date and time formatting, then separate the date from the time with a space.
     
    Note: fmrDateTime requires a small utility function called ZeroPads to -- you guessed it -- zero-pad values. It is included below.
     
    Example:
     
    <%
    Dim dToday, dXmas2001
    Response.Write "Today's date: " & fmtDateTime(Now(), "yyyy-mm-dd")
    ' date displayed: 2001-07-19
    Response.Write "Yesterday's date: " & fmtDateTime(DateAdd("d", -1,
    Now()), "yyyy-mm-dd") ' date displayed: 2001-07-18 dXmas2001 = #12/25/2001 12:45:50# Response.Write "Christmas 2001: : " & fmtDateTime(dXmas2001,
    "m/dd/yyyy hh:mm") ' date/time displayed: 12/25/2001 12:45 %>
     
    Here is the code:
    <%
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Routine:   fmtDateTime()
    '
    ' Purpose:   Returns a Variant (String) containing an expression 
    '            formatted according to instructions contained in a 
    '            format expression
    '
    ' Inputs :   Argument    : d
    '            DataType    : Variant Date
    '            Description : A *valid* variant date variable or an
    '                        : expression that result in a variant date
    '                        : variable
    '
    '            Argument    : pat
    '            DataType    : Variant String
    '            Description : An acceptable date and/or time pattern
    '
    ' Outputs:   Argument    : None
    '
    ' Returns:   Formatted Variant string representation of the date
    '            passed in or an error message where applicable.
    '
    ' Sample Usage :
    '  strToday = fmtDateTime(Now(), "yyyy-mm-dd hh:mm:ss")
    '  strYesterday = fmtDateTime(DateAdd("d", -1, Now()), "h:m:s")
    '
    ' Author :   Kevin J. Turner  July 11, 2001
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Function fmtDateTime(byval d, byval pat)
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Acceptable date formatting parts:
    '  yy       - year value, 2-digits
    '  yyyy     - year value, 4-digits
    '  m        - month value (1 to 12), not zero-padded
    '  mm       - month value (1 to 12), zero-padded
    '  d        - day value (1 to 31), not zero-padded
    '  dd       - day value (1 to 31), zero-padded
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Acceptable time formatting parts:
    '  h        - hours value, not zero-padded
    '  hh       - hours value, zero-padded
    '  m or mm  - minutes value, always zero-padded
    '  s or ss  - seconds value, always zero-padded
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Acceptable time delimiters:
    '   colon (:)
    ' Acceptable date delimiters:    
    '   space ( ) or hyphen (-)
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Assumptions made: 
    ' DATE-ONLY patterns will NOT contain colons or spaces
    ' TIME-ONLY patterns will NOT contain hyphens or forward slashes
    '   and WILL contain colons
    ' DATE-TIME patterns WILL contain acceptable date part delimiters,
    '   acceptable time part delimiters, and a space to delimit the 
    '   date from the time
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
    ' First, if a space character is present, then the patteren is 
    ' split into a 2-element array: the first element being (typically)
    ' the date portion, and the second element being (typically) the 
    ' time portion. If no space character present, then we're working 
    ' with a date or time part. Splitting this type of pattern with 
    ' double-quotes ("") will result in a 1-element array consisting 
    ' of a date portion or a time portion.
    Dim Tokens, token, delim, i, date_part, time_part, DateTokens, TimeTokens
    ' do not treat Null values as erroneous parameters, handle them gracefully
    If IsNull(d) Then
    fmtDateTime = ""
    Exit Function
    End If
    If TypeName(d) <> "Date" Or Not IsDate(d) Then
    fmtDateTime = "Invalid date parameter."
    Exit Function
    End If
    ' if there's a space in the string, then we're dealing with 
    ' date *and* time formatting, otherwise it date OR time formatting
    ' we doing
    If InStr(pat, " ") > 0 Then
    Tokens = Split(pat, " ") ' should be 2 tokens --> (0)date (1)time
    Else
    Tokens = Split(pat, "") ' date OR time formatting
    End If
    bIsDate = False : bIsTime = False
    For Each token In Tokens
    If InStr(token, "-") > 0 Or InStr(token, "/") > 0 Then
    ' get the delimter used...
    If InStr(token, "-") Then
    delim = "-"
    ElseIf InStr(token, "/") Then
    delim = "/"
    End If
    ' tokenize the date parts
    DateTokens = Split(token, delim)
    For i = 0 To UBound(DateTokens)
    ' replace the time tokens with properly formatted values
    Select Case CStr(DateTokens(i))
    Case "yy"
    DateTokens(i) = Right(CStr(DatePart("yyyy", d)), 2)
    Case "yyyy"
    DateTokens(i) = CStr(DatePart("yyyy", d))
    Case "m"
    DateTokens(i) = CStr(DatePart("m", d))
    Case "mm"
    DateTokens(i) = ZeroPad(CStr(DatePart("m", d)),2)
    Case "d"
    DateTokens(i) = CStr(DatePart("d", d))
    Case "dd"
    DateTokens(i) = ZeroPad(CStr(DatePart("d", d)),2)
    Case Else
    fmtDateTime = "Invalid date format : " & token
    Exit Function
    End Select
    Next
    date_part = Join(DateTokens, delim)
    End If
    If InStr(token, ":") > 0 Then
    ' tokenize the time parts
    TimeTokens = Split(token, ":")
    For i = 0 To UBound(TimeTokens)
    ' replace the time tokens with properly formatted values
    Select Case CStr(TimeTokens(i))
    Case "h"
    TimeTokens(i) = Right(CStr(DatePart("h", d)), 2)
    Case "hh"
    TimeTokens(i) = ZeroPad(CStr(DatePart("h", d)),2)
    Case "m", "mm"  ' always zero-pad minutes
    TimeTokens(i) = ZeroPad(CStr(DatePart("n", d)),2)
    Case "s", "ss"  ' always zero-pad seconds
    TimeTokens(i) = ZeroPad(CStr(DatePart("s", d)),2)
    Case Else
    fmtDateTime = "Invalid time format : " & token
    Exit Function
    End Select
    Next
    time_part = Join(TimeTokens, ":")
    End If
    Next
    fmtDateTime =  Trim(date_part & " " & time_part)
    End Function
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Routine:   ZeroPad()
    '
    ' Purpose:   Pads a Variant String with zeros to a specified number
    '            of digits, 
    '               e.g.  "12" padded to 4 digits --> "0012"
    '
    ' Inputs :   Argument    : str
    '            DataType    : Variant String
    '            Description : The string value to be padded
    '
    '            Argument    : iSize
    '            DataType    : Variant Integer
    '            Description : The total desired size of the returned
    '                          string.
    '
    ' Outputs:   Argument    : None
    '
    ' Returns:   A zero-padded Variant string representation of the string
    '            passed in.
    '
    ' Sample Usage :
    '  strVal = ZeroPad("14", 4)  ' <--  returns "0014"
    '
    ' Author :   Kevin J. Turner  July 11, 2001
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Function ZeroPad(byval str, byval iSize)
    ZeroPad = String((iSize - Len(str)), "0") & Trim(str)
    End Function
    %>
    

    DISCLAIMER: The content provided in this article is not warranted or guaranteed by Developer Shed, Inc. The content provided is intended for entertainment and/or educational purposes in order to introduce to the reader key ideas, concepts, and/or product reviews. As such it is incumbent upon the reader to employ real-world tactics for security and implementation of best practices. We are not liable for any negative consequences that may result from implementing any information covered in our articles or tutorials. If this is a hardware review, it is not recommended to open and/or modify your hardware.

    More ASP Code Articles
    More By aspfree

     

    IBM® developerWorks developerWorks - FREE Tools!


    Build Forge Express demo: Enabling software delivery excellence for small and midsized businesses

    This demonstration gives you an overview of IBM® Rational® Build Forge Express Edition, a global offering that provides a framework to automate and execute software processes. Rational Build Forge provides a software assembly line that can support all of your tools, technologies, and platforms so you can achieve a repeatable, reliable, and traceable build and release process.
    FREE! Go There Now!


    NEW! Cook up Web sites fast with CakePHP, Part 4: Use CakePHP&apos;s Session and Request Handler components

    CakePHP is a stable production-ready, rapid-development aid for building Web sites in PHP. This "Cook up Web sites fast with CakePHP" series shows you how to build an online product catalog using CakePHP.
    FREE! Go There Now!


    NEW! Evaluate IBM Rational Software Analyzer V7.0

    Download a free trial version of IBM Rational Software Analyzer Developer Edition V7.0 to identify bug defects earlier in the software development cycle. Rational Software Analyzer is an extensible software development solution that reduces the expense of bug-fixes by enabling static analysis code reviews and bug identification very early in the development cycle.
    FREE! Go There Now!


    NEW! IBM Rational ClearCase Innovator's Series

    Learn from the best! Find out how developers use Rational ClearCase to be more flexible, innovative and deliver higher quality code in the Rational ClearCase Power Users eKit. This complimentary eKit provides a collection of materials, like articles, whitepapers, and demos that can help you become a power user of Rational ClearCase.
    FREE! Go There Now!


    NEW! Improve your build process with IBM Rational Build Forge, Part 1: Create a continuous build and integration environment

    Learn how to implement a build management system that uses and extends your existing automation technologies. This tutorial shows, step-by-step, how to install and configure IBM Rational Build Forge to manage builds for Jakarta Tomcat from source code.
    FREE! Go There Now!


    NEW! Integrating XML into Your Enterprise Using Data Federation

    XML has become a common way of storing business data as flat files and many data server vendors including IBM have provided ways to store this data within relational database systems. Increasingly collections of XML files are accessed like databases using an xQuery and other XML standard mechanisms. Businesses find the need to combine the traditional tabular structured data with XML formatted data. In this webcast, you’ll learn about IBM’s WebSphere Federation Server technology, which provides users with the ability to integrate these two data formats.
    FREE! Go There Now!


    NEW! Rational Talks to You:Per Kroll on Rational Method Composer Plug-in customization

    Join this Rational Talks to You teleconference on December 11 at 1:00 pm ET to get tips on building your own plugins with Rational Method Composer. Get your questions answered!
    FREE! Go There Now!


    NEW! The role of integrated requirements management in software delivery

    This paper is about the critical role that a discipline called integrated require­ments management can play in helping to ensure that your business goals and IT investments are continuously aligned—whether you are sourcing, integrat­ing, building or maintaining software. It also looks at ways that automated IBM Rational® products can work together to help you use requirements in the very best way.
    FREE! Go There Now!


    NEW! Webcast: Extreme transaction processing with WebSphere Extended Deployment

    In this webcast, you'll get an introduction to the eXtreme Transaction Processing (XTP) features of WebSphere Extended Deployment and the common architectural traits required by XTP applications. See how WebSphere Extended Deployment's ObjectGrid feature provides a state-of-the-art infrastructure for hosting XTP applications.
    FREE! Go There Now!


    NEW! Whitepaper: Delivering SOA solutions: service lifecycle management

    The unprecedented scope of a service-oriented architecture (SOA) initiative brings to the forefront a number of management and governance issues that were sidestepped in the past. The key to a successful SOA implementation is managing and governing activities throughout the entire SOA delivery lifecycle by ensuring that services conform to the needs of all of the business’s stakeholders. Learn how service lifecycle management allows the business to ensure that the process by which services are defined, created, tested, deployed, optimized and retired is manageable, repeatable and auditable.
    FREE! Go There Now!



    All FREE IBM® developerWorks Tools!

    ASP CODE ARTICLES

    - ASP Forms
    - ASP: The Beginning
    - Getting Remote Files With ASP Continued
    - Inbox and Outbox Manipulation in ASP
    - Relational DropDownList Using VB.NET
    - Ad Tracking URL Hits
    - Use ViewState to display one record per page...
    - Send Email using ASP.NET formatted in HTML
    - ASP File Explorer
    - ASP/XML Interview questions by Srivatsan Sri...
    - Various methods of setting Date values to a ...
    - Conditional DataGrid Item and using checkbox...
    - Fill .NET Listbox with SQL DataReader
    - Filling Dropdown box using Code-Behinds in C#
    - FLAMES code sample written in .NET What is F...





    © 2003-2009 by Developer Shed. All rights reserved. DS Cluster 5 Hosted by Hostway
    For more Enterprise Application Development news, visit eWeek