Date to second since 1970


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Date to second since 1970
# 1  
Old 06-16-2008
Date to second since 1970

Hello,
I have found a piece of code which converts seconds elapsed since 1970 for an input date. Can anyone please explain a little bit the code below:

Code:
#!/bin/bash
# function to reproduce UNIX time() value
second()
{
set -- $(TZ=GMT date '+%Y %m %d')
local y=$1 m=1$2 d=1$3
((m-=103, d-=101, m<0 && (m+=12, --y)))
((d+=(m*153 + 2)/5+y*365+y/4-y/100+y/400-719468))
echo $((d*86400))
}


Last edited by Yogesh Sawant; 06-16-2008 at 02:22 AM.. Reason: added code tags
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Answers to Frequently Asked Questions

Compare date in .txt with system date and remove if it's lesser than system date

I m working on shell scripting and I m stuck where in my .txt file there is column as expiry date and I need to compare that date with system date and need to remove all the rows where expiry date is less than system date and create a new .txt with update. (1 Reply)
Discussion started by: Stuti
1 Replies

2. UNIX for Beginners Questions & Answers

Compare date in .txt with system date and remove if it's lesser than system date

Can someone help me with the code wherein there is a file f1.txt with different column and 34 column have expiry date and I need to get that and compare with system date and if expiry date is <system date remove those rows and other rows should be moved to new file f2.txt . I don't want to delete... (2 Replies)
Discussion started by: Stuti
2 Replies

3. Shell Programming and Scripting

Date: invalid date trying to set Linux date in specific format

i try to set linux date & time in specific format but it keep giving me error Example : date "+%d-%m-%C%y %H:%M:%S" -d "19-01-2017 00:05:01" or date +"%d-%m-%C%y %H:%M:%S" -d "19-01-2017 00:05:01" keep giving me this error : date: invalid date ‘19-01-2017 00:05:01' Please use CODE tags... (7 Replies)
Discussion started by: umen
7 Replies

4. Shell Programming and Scripting

Write Linux script to convert timestamps older than 1.1.1970 to 1.1.1980

I am having problems because some of my files have timestamps that are earlier that 1.1.1970, the Unix start of time convention. So I would like to write a script that finds all files in home folder and subfolders with timestamps earlier than 1.1.1970 and converts them to 1.1.1980. I... (3 Replies)
Discussion started by: francus
3 Replies

5. AIX

The result of Jan 01 (1970) by last command

Dears, My boss asked me to record the login information on AIX server, so I used "last" command to get i want. But it is so strange when i get a record the login date is Jan,01 1970 (as attached picture). does anyone know what happen? Thanks and Regards, (6 Replies)
Discussion started by: Zack.Chiang
6 Replies

6. Shell Programming and Scripting

Converting a date to friday date and finding Min/Max date

Dear all, I have 2 questions. I have a file with many rows which has date of the format YYYYMMDD. 1. I need to change the date to that weeks friday date(Ex: 20120716(monday) to 20120720). Satuday/Sunday has to be changed to next week friday date too. 2. After converting the date to... (10 Replies)
Discussion started by: 2001.arun
10 Replies

7. Shell Programming and Scripting

Check if a date field has date or timestamp or date&timestamp

Hi, In a field, I should receive the date with time stamp in a particular field. But sometimes the vendor sends just the date or the timestamp or correctl the date&timestamp. I have to figure out the the data is a date or time stamp or date&timestamp. If it is date then append "<space>00:00:00"... (1 Reply)
Discussion started by: machomaddy
1 Replies

8. UNIX for Dummies Questions & Answers

Delete a row from a file if one column containing a date is greater than the current system date

Hello gurus, I am hoping someone can help me with the required code/script to make this work. I have the following file with records starting at line 4: NETW~US60~000000000013220694~002~~IT~USD~2.24~20110201~99991231~01~01~20101104~... (4 Replies)
Discussion started by: chumsky
4 Replies

9. Shell Programming and Scripting

Date One Week Ago From Given Date, Not From Current Date

Hi all, I've used various scripts in the past to work out the date last week from the current date, however I now have a need to work out the date 1 week from a given date. So for example, if I have a date of the 23rd July 2010, I would like a script that can work out that one week back was... (4 Replies)
Discussion started by: Donkey25
4 Replies

10. UNIX for Dummies Questions & Answers

days since 1970

How can I get the syatem to give me the days since 1970 (as seen in the shadow file)? (4 Replies)
Discussion started by: 98_1LE
4 Replies
Login or Register to Ask a Question
calendar(3erl)						     Erlang Module Definition						    calendar(3erl)

NAME
calendar - Local and universal time, day-of-the-week, date and time conversions DESCRIPTION
This module provides computation of local and universal time, day-of-the-week, and several time conversion functions. Time is local when it is adjusted in accordance with the current time zone and daylight saving. Time is universal when it reflects the time at longitude zero, without any adjustment for daylight saving. Universal Coordinated Time (UTC) time is also called Greenwich Mean Time (GMT). The time functions local_time/0 and universal_time/0 provided in this module both return date and time. The reason for this is that sepa- rate functions for date and time may result in a date/time combination which is displaced by 24 hours. This happens if one of the functions is called before midnight, and the other after midnight. This problem also applies to the Erlang BIFs date/0 and time/0 , and their use is strongly discouraged if a reliable date/time stamp is required. All dates conform to the Gregorian calendar. This calendar was introduced by Pope Gregory XIII in 1582 and was used in all Catholic coun- tries from this year. Protestant parts of Germany and the Netherlands adopted it in 1698, England followed in 1752, and Russia in 1918 (the October revolution of 1917 took place in November according to the Gregorian calendar). The Gregorian calendar in this module is extended back to year 0. For a given date, the gregorian days is the number of days up to and including the date specified. Similarly, the gregorian seconds for a given date and time, is the the number of seconds up to and including the specified date and time. For computing differences between epochs in time, use the functions counting gregorian days or seconds. If epochs are given as local time, they must be converted to universal time, in order to get the correct value of the elapsed time between epochs. Use of the function time_difference/2 is discouraged. There exists different definitions for the week of the year. The calendar module contains a week of the year implementation which conforms to the ISO 8601 standard. Since the week number for a given date can fall on the previous, the current or on the next year it is important to provide the information which year is it together with the week number. The function iso_week_number/0 and iso_week_number/1 returns a tuple of the year and the week number. DATA TYPES
date() = {Year, Month, Day} Year = int() Month = 1..12 Day = 1..31 Year cannot be abbreviated. Example: 93 denotes year 93, not 1993. Valid range depends on the underlying OS. The date tuple must denote a valid date. time() = {Hour, Minute, Second} Hour = 0..23 Minute = Second = 0..59 EXPORTS
date_to_gregorian_days(Date) -> Days date_to_gregorian_days(Year, Month, Day) -> Days Types Date = date() Days = int() This function computes the number of gregorian days starting with year 0 and ending at the given date. datetime_to_gregorian_seconds({Date, Time}) -> Seconds Types Date = date() Time = time() Seconds = int() This function computes the number of gregorian seconds starting with year 0 and ending at the given date and time. day_of_the_week(Date) -> DayNumber day_of_the_week(Year, Month, Day) -> DayNumber Types Date = date() DayNumber = 1..7 This function computes the day of the week given Year , Month and Day . The return value denotes the day of the week as 1 : Monday, 2 : Tuesday, and so on. gregorian_days_to_date(Days) -> Date Types Days = int() Date = date() This function computes the date given the number of gregorian days. gregorian_seconds_to_datetime(Seconds) -> {Date, Time} Types Seconds = int() Date = date() Time = time() This function computes the date and time from the given number of gregorian seconds. is_leap_year(Year) -> bool() This function checks if a year is a leap year. iso_week_number() -> IsoWeekNumber Types IsoWeekNumber = {int(), int()} This function returns the tuple {Year, WeekNum} representing the iso week number for the actual date. For determining the actual date, the function local_time/0 is used. iso_week_number(Date) -> IsoWeekNumber Types Date = date() IsoWeekNumber = {int(), int()} This function returns the tuple {Year, WeekNum} representing the iso week number for the given date. last_day_of_the_month(Year, Month) -> int() This function computes the number of days in a month. local_time() -> {Date, Time} Types Date = date() Time = time() This function returns the local time reported by the underlying operating system. local_time_to_universal_time({Date1, Time1}) -> {Date2, Time2} This function converts from local time to Universal Coordinated Time (UTC). Date1 must refer to a local date after Jan 1, 1970. Warning: This function is deprecated. Use local_time_to_universal_time_dst/1 instead, as it gives a more correct and complete result. Especially for the period that does not exist since it gets skipped during the switch to daylight saving time, this function still returns a result. local_time_to_universal_time_dst({Date1, Time1}) -> [{Date, Time}] Types Date1 = Date = date() Time1 = Time = time() This function converts from local time to Universal Coordinated Time (UTC). Date1 must refer to a local date after Jan 1, 1970. The return value is a list of 0, 1 or 2 possible UTC times: [] : For a local {Date1, Time1} during the period that is skipped when switching to daylight saving time, there is no corresponding UTC since the local time is illegal - it has never happened. [DstDateTimeUTC, DateTimeUTC] : For a local {Date1, Time1} during the period that is repeated when switching from daylight saving time, there are two corre- sponding UTCs. One for the first instance of the period when daylight saving time is still active, and one for the second instance. [DateTimeUTC] : For all other local times there is only one corresponding UTC. now_to_local_time(Now) -> {Date, Time} Types Now -- see erlang:now/0 Date = date() Time = time() This function returns local date and time converted from the return value from erlang:now() . now_to_universal_time(Now) -> {Date, Time} now_to_datetime(Now) -> {Date, Time} Types Now -- see erlang:now/0 Date = date() Time = time() This function returns Universal Coordinated Time (UTC) converted from the return value from erlang:now() . seconds_to_daystime(Seconds) -> {Days, Time} Types Seconds = Days = int() Time = time() This function transforms a given number of seconds into days, hours, minutes, and seconds. The Time part is always non-negative, but Days is negative if the argument Seconds is. seconds_to_time(Seconds) -> Time Types Seconds = int() < 86400 Time = time() This function computes the time from the given number of seconds. Seconds must be less than the number of seconds per day(86400). time_difference(T1, T2) -> {Days, Time} This function returns the difference between two {Date, Time} tuples. T2 should refer to an epoch later than T1 . Warning: This function is obsolete. Use the conversion functions for gregorian days and seconds instead. time_to_seconds(Time) -> Seconds Types Time = time() Seconds = int() This function computes the number of seconds since midnight up to the specified time. universal_time() -> {Date, Time} Types Date = date() Time = time() This function returns the Universal Coordinated Time (UTC) reported by the underlying operating system. Local time is returned if universal time is not available. universal_time_to_local_time({Date1, Time1}) -> {Date2, Time2} Types Date1 = Date2 = date() Time1 = Time2 = time() This function converts from Universal Coordinated Time (UTC) to local time. Date1 must refer to a date after Jan 1, 1970. valid_date(Date) -> bool() valid_date(Year, Month, Day) -> bool() Types Date = date() This function checks if a date is a valid. LEAP YEARS
The notion that every fourth year is a leap year is not completely true. By the Gregorian rule, a year Y is a leap year if either of the following rules is valid: * Y is divisible by 4, but not by 100; or * Y is divisible by 400. Accordingly, 1996 is a leap year, 1900 is not, but 2000 is. DATE AND TIME SOURCE
Local time is obtained from the Erlang BIF localtime/0 . Universal time is computed from the BIF universaltime/0 . The following facts apply: * there are 86400 seconds in a day * there are 365 days in an ordinary year * there are 366 days in a leap year * there are 1461 days in a 4 year period * there are 36524 days in a 100 year period * there are 146097 days in a 400 year period * there are 719528 days between Jan 1, 0 and Jan 1, 1970. Ericsson AB stdlib 1.17.3 calendar(3erl)