Date format
From Rosetta Code
Programming Task
This is a programming task. It lays out a problem which Rosetta Code users are encouraged to solve, using languages they know.
Display the current date in the formats of "2007-11-10" and "Sunday, November 10, 2007".
Contents |
[edit] Ada
with Ada.Calendar; use Ada.Calendar; with Ada.Calendar.Formatting; use Ada.Calendar.Formatting; with Ada.Text_IO; use Ada.Text_IO; procedure Date_Format is function Image (Month : Month_Number) return String is begin case Month is when 1 => return "January"; when 2 => return "February"; when 3 => return "March"; when 4 => return "April"; when 5 => return "May"; when 6 => return "June"; when 7 => return "July"; when 8 => return "August"; when 9 => return "September"; when 10 => return "October"; when 11 => return "November"; when 12 => return "December"; end case; end Image; function Image (Day : Day_Name) return String is begin case Day is when Monday => return "Monday"; when Tuesday => return "Tuesday"; when Wednesday => return "Wednesday"; when Thursday => return "Thursday"; when Friday => return "Friday"; when Saturday => return "Saturday"; when Sunday => return "Sunday"; end case; end Image; Today : Time := Clock; begin Put_Line (Image (Today) (1..10)); Put_Line ( Image (Day_Of_Week (Today)) & ", " & Image (Ada.Calendar.Month (Today)) & Day_Number'Image (Ada.Calendar.Day (Today)) & "," & Year_Number'Image (Ada.Calendar.Year (Today)) ); end Date_Format;
Sample output:
2008-10-03 Friday, October 3, 2008
[edit] C
#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { time_t seconds; struct tm *now; seconds = time(NULL); now = localtime(&seconds); printf("%d-%d-%d\n", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday); char *months[] = {"January","February","March","April","May","June","July","August","September","October","November","December"}; char *days[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; printf("%s, %s %d, %d\n",days[now->tm_wday], months[now->tm_mon], now->tm_mday, now->tm_year + 1900); /* shortcut for default format */ printf("%s", ctime(&seconds)); return 0; }
Sample output:
2008-10-7 Tuesday, October 7, 2008 Tue Oct 7 16:51:40 2008
[edit] ColdFusion
<cfset date = createDate( 2007, 11, 10 ) /> #dateFormat( date, "YYYY-MM-DD" )#, #dateFormat( date, "DDDD, MMMM DD, YYYY" )#
[edit] D
Works with: D version DMD 1.026
Library: Tango
module datetimedemo ;
import tango.time.Time ;
import tango.text.locale.Locale ;
import tango.time.chrono.Gregorian ;
import tango.io.Stdout ;
void main() {
Gregorian g = new Gregorian ;
Stdout.layout = new Locale; // enable Stdout to handle date/time format
Time d = g.toTime(2007, 11, 10, 0, 0, 0, 0, g.AD_ERA) ;
Stdout.format("{:yyy-MM-dd}", d).newline ;
Stdout.format("{:dddd, MMMM d, yyy}", d).newline ;
d = g.toTime(2008, 2, 1, 0, 0, 0, 0, g.AD_ERA) ;
Stdout.format("{:dddd, MMMM d, yyy}", d).newline ;
}
Sample Output:
2007-11-10 Saturday, November 10, 2007 Friday, February 1, 2008
[edit] Forth
: str-table create ( n -- ) 0 do , loop does> ( n -- str len ) swap cells + @ count ; here ," December" here ," November" here ," October" here ," September" here ," August" here ," July" here ," June" here ," May" here ," April" here ," March" here ," February" here ," January" 12 str-table months : .long-date time&date ( s m h D M Y ) >R 1- months type space 1 .r [char] , emit space R> . drop drop drop ;
: .-0 ( n -- n ) [char] - emit dup 10 < if [char] 0 emit then ; : .short-date time&date 1 .r .-0 1 .r .-0 1 .r drop drop drop ;
[edit] Haskell
import System.Locale
import System.Time
format1 :: CalendarTime -> String
format1 = formatCalendarTime defaultTimeLocale "%Y-%m-%e"
format2 :: CalendarTime -> String
format2 = formatCalendarTime defaultTimeLocale "%A, %B %d, %Y"
main = do
t <- getClockTime >>= toCalendarTime
mapM_ putStrLn [format1 t, format2 t]
[edit] J
dayNm =: ;:'Sunday Monday Tuesday Wednesday Thursday Friday Saturday'
monthNm=: ;:'0 January February March April May June July August September October November December'
dateFormat=: 3 : 0
0 dateFormat y NB. default to short format
:
'year month date'=. 3{. y
select. x
case. 0 do. NB. short format YYYY-MM-DD, e.g. '1900-02-28'
dashNN=. (('-0' {.~ (3-#)) ,])@ ":
(":year),(dashNN month),(dashNN date)
case. 1 do. NB. verbose format, e.g. 'Wednesday, February 28, 1900'
Y=. year - A =. <. 12%~ 14-month
M=. <.12%~31*(month+12*A)-2
D=. 7| date+M+Y+(<.Y%4)+(<.Y%400)-(<.Y%100)
(>D{dayNm), ', ',(>month{monthNm),' ',(":date), ', ', ":year
end.
)
Example:
(dateFormat ,: 1& dateFormat) 1920 12 17 1920-12-17 Friday, December 17, 1920
[edit] Java
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.text.DateFormatSymbols;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class Dates{
public static void main(String[] args){
Calendar now = new GregorianCalendar(); //months are 0 indexed, dates are 1 indexed
DateFormatSymbols symbols = new DateFormatSymbols(); //names for our months and weekdays
//plain numbers way
System.out.println(now.get(Calendar.YEAR) + "-" + (now.get(Calendar.MONTH) + 1) + "-" + now.get(Calendar.DATE));
//words way
System.out.print(symbols.getWeekdays()[now.get(Calendar.DAY_OF_WEEK)] + ", ");
System.out.print(symbols.getMonths()[now.get(Calendar.MONTH)] + " ");
System.out.println(now.get(Calendar.DATE) + ", " + now.get(Calendar.YEAR));
//using DateFormat
Date date = new Date();
DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(format1.format(date));
DateFormat format2 = new SimpleDateFormat("EEEE, MMMM dd, yyyy");
System.out.println(format2.format(date));
}
}
[edit] OCaml
# #load "unix.cma";; # open Unix;; # let t = time() ;; val t : float = 1219997516. # let gmt = gmtime t ;; val gmt : Unix.tm = {tm_sec = 56; tm_min = 11; tm_hour = 8; tm_mday = 29; tm_mon = 7; tm_year = 108; tm_wday = 5; tm_yday = 241; tm_isdst = false} # Printf.sprintf "%d-%02d-%02d" (1900 + gmt.tm_year) (1 + gmt.tm_mon) gmt.tm_mday ;; - : string = "2008-08-29"
let months = [| "January"; "February"; "March"; "April"; "May"; "June"; "July"; "August"; "September"; "October"; "November"; "December" |] let days = [| "Sunday"; "Monday"; "Tuesday"; (* Sunday is 0 *) "Wednesday"; "Thursday"; "Friday"; "Saturday" |] # Printf.sprintf "%s, %s %d, %d" days.(gmt.tm_wday) months.(gmt.tm_mon) gmt.tm_mday (1900 + gmt.tm_year) ;; - : string = "Friday, August 29, 2008"
[edit] Perl
Library: POSIX
use POSIX;
print POSIX::strftime('%Y-%m-%d', 0, 0, 0, 10, 10, 107), "\n";
print POSIX::strftime('%A, %B %d, %Y', 0, 0, 0, 10, 10, 107), "\n";
Output with locales C:
2007-11-10 Saturday, November 10, 2007
Output with locales cs_CZ.UTF-8:
2007-11-10 Sobota, listopad 10, 2007
Actual date:
use POSIX;
print POSIX::strftime('%Y-%m-%d', localtime), "\n";
print POSIX::strftime('%A, %B %d, %Y', localtime), "\n";
Output with locales C:
2008-02-13 Wednesday, February 13, 2008
[edit] Python
Formatting rules: http://docs.python.org/lib/module-time.html (strftime)
import datetime
today = datetime.date.today()
# This one is built in:
print today.isoformat()
# Or use a format string for full flexibility:
print today.strftime('%Y-%m-%d')
[edit] Raven
time int as today
Short form:
today '%Y-%m-%d' date
Long form:
today '%A, %B %d, %Y' date
[edit] UNIX Shell
Works with: bash
Works with: tcsh
date +"%Y-%m-%d" date +"%A, %B %d, %Y"
Categories: Programming Tasks | Solutions by Programming Task | Clarified and Needing Review | Ada | C | ColdFusion | ColdFusion examples needing attention | Examples needing attention | D | D examples needing attention | Tango | Forth | Haskell | J | Java | OCaml | OCaml examples needing attention | Perl | POSIX | Python | Raven | UNIX Shell

