Sponsored Content
Full Discussion: Date validation
The Lounge What is on Your Mind? Date validation Post 302980654 by jim mcnamara on Wednesday 31st of August 2016 08:51:42 AM
Old 08-31-2016
Here is the why behind Don's correct comment about touch - the answer is the mktime STDC library call. It tries to "fix" bad dates.

Code:
//  mktime_test.c
#include <stdio.h>
#include <time.h>
// mktime attempts correction for bad dates given to other 
//     utilities like touch.

int main(void)
{
   struct tm time_str;
    char buf[30]={0x0};
    time_str.tm_year = 116;// which is 2016 - 1900
    time_str.tm_mon =  5;  // June, months are 0 - 11
    time_str.tm_mday = 34; // June 34 which is wrong
    time_str.tm_hour = 0;
    time_str.tm_min = 0;
    time_str.tm_sec = 1;   // first second of the day
    time_str.tm_isdst = -1;  // figure out whether DST is active or not
    if (mktime(&time_str) == -1) // error, note that mktime attempts to correct "bad" values.
        fprintf(stderr,"Bad input\n");
    else 
    {
        (void)strftime(buf, sizeof(buf), "%c", &time_str);
         printf("%s: time_str.tm_mon=%d  time_str.tm_mday=%d\n",
                buf, time_str.tm_mon, time_str.tm_mday);
    }
    return 0;
}

Example run:

Code:
$ ./mktime
Mon Jul  4 00:00:01 2016: time_str.tm_mon=6  time_str.tm_mday=4

The bad date was "fixed" to July 4.
This User Gave Thanks to jim mcnamara For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Problem with Date validation

Hi All, I've to validate a date input for the format YYYYMMDD. The input should be of 8 digits with only numeric values. I tried the following echo $1 | grep '^\{8}$/p' if then echo "Valid" else echo "invalid" I get the error, grep: RE error 16: Bad number. Any help... (3 Replies)
Discussion started by: sumesh.abraham
3 Replies

2. Shell Programming and Scripting

Date Validation again

I want a sample Date validation script using if loops. The script should first compare "year".If the year is lesser than the current year,It should go for "month" checking. I have the script that splits the date into year,month and date.I want only the checking part. My if loop checking is not... (4 Replies)
Discussion started by: dave_nithis
4 Replies

3. Shell Programming and Scripting

Date Validation:

Hi I have below file with 3 rd column as date ....i want to make 3 column to mm/dd/yyyy . in the below file 2 row date is like 1/23/1994 so i want to append '0' to month i,e. 01/23/1994 and in the 3 row date is like 6/4/1994 ---so i want this to 06/04/1994 Source:... (1 Reply)
Discussion started by: satyam_sat
1 Replies

4. Shell Programming and Scripting

Basic date validation help

Hi, I've made a very basic date validation script, but the syntax of the until condtion is wrong, could someone have a quick look and correct it please?:) Thanks for any help. echo -n "Please enter your date of birth (dd-mm-yyyy): " read dob day=${dob:0:2} month=${dob:3:2} year=${dob:6:4}... (1 Reply)
Discussion started by: mustaine85
1 Replies

5. Shell Programming and Scripting

Date Validation

the user have to input the date format in mmddmmhhyyyy (month,date,minutes,hour,year) i want a shell script to check whether the user has properly input in the above said manner. kindly advice (2 Replies)
Discussion started by: vkca
2 Replies

6. Shell Programming and Scripting

Date Validation in unix

I have a script which is take date as parameter sh abc.sh <2010-02-01> #!/sh/bin my_date=$1 #Here i want to two diffrent dates ## 3 Days before ##date14query=$mydate - 4 (it will be 2010-01-28) ##date24query=$mydate +4 (it will be 2010-01-05) #Please Help (3 Replies)
Discussion started by: pritish.sas
3 Replies

7. Shell Programming and Scripting

Date validation

Hi, I have a script which runs on specific sunday. If that script runs on the sunday i want to execute another script on following wednesday. I have a log for that server. My wednesday scripts needs to check the sunday run log timestamp and if it matches it should run. Please help. Thanks,... (1 Reply)
Discussion started by: Krrishv
1 Replies

8. UNIX for Dummies Questions & Answers

Unix date validation

Dears, I am working on a batch that processes file with name containing date prefix eg., 20101222_file.dat. The logic is to process files in order. Eg., 20101225 must be processed only after 20101222. Ok first glance it looked simple, it use a variable to check this date value as number and... (2 Replies)
Discussion started by: naraink
2 Replies

9. Shell Programming and Scripting

Date validation

File contains below data,how to validate the date using awk command or any command. date formate is fixed as "YYYYMMDD" test1|20120405 test2|20121405 output should be: test1|20120405 Thanks (2 Replies)
Discussion started by: bmk
2 Replies

10. Programming

Date validation in mysql

Hi All, We need to create the custom function to pass the parameter is date.if it is valid return 1 else 0 return should be 1 select is_date('2012-09-17'); return should be 0 select is_date('2012-79-17'); Thanks (2 Replies)
Discussion started by: bmk
2 Replies
TOUCH(1)							   User Commands							  TOUCH(1)

NAME
touch - change file timestamps SYNOPSIS
touch [OPTION]... FILE... DESCRIPTION
Update the access and modification times of each FILE to the current time. A FILE argument that does not exist is created empty, unless -c or -h is supplied. A FILE argument string of - is handled specially and causes touch to change the times of the file associated with standard output. Mandatory arguments to long options are mandatory for short options too. -a change only the access time -c, --no-create do not create any files -d, --date=STRING parse STRING and use it instead of current time -f (ignored) -h, --no-dereference affect each symbolic link instead of any referenced file (useful only on systems that can change the timestamps of a symlink) -m change only the modification time -r, --reference=FILE use this file's times instead of current time -t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time --time=WORD change the specified time: WORD is access, atime, or use: equivalent to -a WORD is modify or mtime: equivalent to -m --help display this help and exit --version output version information and exit Note that the -d and -t options accept different time-date formats. DATE STRING
The --date=STRING is a mostly free format human readable date string such as "Sun, 29 Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or even "next Thursday". A date string may contain items indicating calendar date, time of day, time zone, day of week, relative time, rela- tive date, and numbers. An empty string indicates the beginning of the day. The date string format is more complex than is easily docu- mented here but is fully described in the info documentation. AUTHOR
Written by Paul Rubin, Arnold Robbins, Jim Kingdon, David MacKenzie, and Randy Smith. REPORTING BUGS
GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report touch translation bugs to <http://translationproject.org/team/> COPYRIGHT
Copyright (C) 2017 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. SEE ALSO
Full documentation at: <http://www.gnu.org/software/coreutils/touch> or available locally via: info '(coreutils) touch invocation' GNU coreutils 8.28 January 2018 TOUCH(1)
All times are GMT -4. The time now is 12:48 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy