On AIX 6.1, batchman process does not correctly recognize the time zone of the local workstation in Workload Scheduler - aix

On AIX 6.1, the batchman process does not correctly recognize the time zone of the local machine that is set to GMT, even if, in the IBM Workload Scheduler CPU definition, it is correctly set to the correct timezone. You see the following message in the stdlist log :
"10:29:39 24.11.2015|BATCHMAN:AWSBHT126I Time in CPU TZ (America/Chicago): 2015/11/24 04:29 10:29:39
24.11.2015|BATCHMAN:AWSBHT127I Time in system TZ (America/Chicago): 2015/11/24 10:29 10:29:39
24.11.2015|BATCHMAN:+ 10:29:39 24.11.2015|BATCHMAN:+ AWSBHT128I Local time zone time differs from workstation time zone time by 360 minutes."
Batchman does not recognize the correct time zone because AIX 6.1 uses (International Components for Unicode) ICU libraries to manage the timezone of the system, and these ICU libraries are in conflict with the IBM Workload Scheduler libraries.

i have an idea. You should export the TZ environment variable before starting IBM Workload Scheduler to the old POSIX format, for example, CST6CDT . This is an example of a POSIX name convention instead of an Olson name convention (for example America/Chicago). It avoids the new default TimeZone management through the ICU libraries in AIX 6.1, by switching to the old POSIX one (as in AIX 5.x).

Related

Changing timezone on redis server

The time command on the redis-cli returns the current server time (doc here). How can I change the timezone on the redis server?
Note that redis gives me UTC timezone, whereas date on the Linux terminal shows me UTC+5, which is my correct timezone (Asia/Oral).
The time command is documented as using Unix time, which is UTC, so there's no way to change that. Timezone issues are complicated, so it makes sense for the Redis server not to concern itself with them.
Instead, convert it on the client using the libraries available on your platform.

Sending Notification to different time zones

I have a server in Usa and I have clients in different parts of the world, Australia, South america, Usa, Canada, Europe.
So I need to send notification of events one hour before the event take place.
So In sql server I have a table with different events those events are stored in Utc(2015-12-27 20:00:00.0000000). and in other table the timezone that belongs to every event ("Australia/Sydney").
So how could I calculate in a query when to send the notifications? or maybe I would have to do it with a server side language.
Could any one could help me with a possible solution.
Thanks
You've asked very broadly, so I can only answer with generalities. If you need a more specific answer, please edit your question to be more specific.
A few things to keep in mind:
Time zone conversions are best done in the application layer. Most server-side application platforms have time zone conversion functions, either natively or via libraries, or both.
If you must convert at the database layer (such as when using SSRS or SSAS, or complex stored procs, etc.) and you are using SQL Server, then there are two approaches to consider:
SQL Server 2016 CTP 3.1 adds native support for time zone conversions via the AT TIME ZONE statement. However, they work with Windows time zone identifiers, such as "AUS Eastern Standard Time", rather than IANA/Olson identifiers, such as the "Australia/Sydney" you specified.
You might use third-party support for time zones, such as my SQL Server Time Zone Support project, which does indeed support IANA/Olson time zone identifiers. There are other similar projects out there as well.
Regardless of whether you convert at the DB layer or at the application layer, the time zone of your server should be considered irrelevant. Always get the current time in UTC rather than local time. Always convert between UTC and a specific time zone. Never rely on the server's local time zone setting to be anything in particular. On many servers, the time zone is intentionally set to UTC, but you should not depend on that.
Nothing in your question indicates how you plan on doing scheduling or notifications, but that is actually the harder part. Specifically, scheduling events into the future should not be based on UTC, but rather on the event's specific time zone. More about this here.
You might consider finding a library for your application layer that will handle most of this for you, such as Quartz (Java) or Quartz.Net (.NET). There are probably similar solutions for other platforms.
You should read the large quantity of material already available on this subject here on Stack Overflow, including the timezone tag wiki and Daylight saving time and time zone best practices.

Time Difference in Siebel Application and Database

I have a problem where I can see time is not same in application and in database.
For example, record that has been created from UI has time '10/21/2014 07:49:12 AM'. Where as, the same record when queried in database has the time '10/21/2014 11:49:12 AM'.
As we can see, there is a time difference of 4 hours.
We have set UTC parameter to FALSE and re-started the siebel web server. But, we haven't restarted the siebel server and load balancing server.
Siebel server's default timezone is set at Application->System Preference level: "Default Time Zone". Siebel will adjust the values from DB tables accordingly. In addition, users may specify their own timezone at Employee level. Check these places to see if something is set.
As you've already noticed, Siebel stores the date and time values in UTC. When a user enters a date, it's internally translated to UTC before saving it to the database; when it's recovered in a business component, it's translated back to the current user's timezone. As Ranjith R said in his answer, each user may specify it's own timezone in his/her profile, otherwise the Default Time Zone system preference applies.
The decision whether to use UTC times or not, must be made before deploying the servers. Once the application is set up and running, as it appears to be your case, the change from UTC to non-UTC is not supported.
There is a full chapter dedicated to UTC dates and times, on the Siebel Deployment Guide of the Siebel Bookshelf. Here is the link for Siebel 8.0. Amongst other things, they state the following:
CAUTION: Once you have already deployed your Siebel applications using UTC and created user date-time data in UTC format, it is not supported to stop using UTC by setting the Universal Time Coordinated system preference to FALSE. Otherwise, incorrect time stamp values may be created and displayed.
Apparently, there is a UTC conversion utility intended to update historical data from non-UTC format to UTC, but it doesn't work the other way around.

IIS Reporting wrong Time and TimeZone

Everything i am reading says that IIS uses the local machine time and timezone, and as such to change the effective time zone and/or time, all i need do is change the time and timezone for the server, and it will change the effective time and timezone that the IIS server sees, and i have a server running a simple WCF service that this just does not seem to be working for me.
This server is is located on Pacific turf in a leased farm, but has had an Eastern timezone configured on it since we first set it up. I have tried resetting everything and even tried bouncing the box, so i am sure it is not cached Time values or something so simple. However upon break-pointing my WCF code to try and understand why it is passing out dates that are off by three hours to all consuming services, i found that IIS is convinced it is in Pacific Timezone, despite everything being configured otherwise.
System.TimeZoneInfo.Local reports that it is in Pacific Time, and DateTime.Now give me a timestamp that is off by three hours, and i can not seem to figure out how to convince IIS that it needs to use Eastern Time as the effective time zone for the records it is creating and handing out.
In general, server-side code should not depend on the local time zone. Calling either TimeZoneInfo.Local or DateTime.Now from a server application is usually a mistake. See The Case Against DateTime.Now.
The best practice would be to leave your server set to Coordinated Universal Time (UTC), and write your application to manage time zones internally. If you are dependent on Eastern time, then your code should do something like:
TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
DateTime now = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
That said, if TimeZoneInfo.Local.Id is returning Pacific Standard Time, then there are only two possible explanations:
Your system is indeed set for the Pacific time zone.
Your system was set for the Pacific time zone, but you changed it without restarting or calling TimeZoneInfo.ClearCachedData.
Since you've eliminated both of these explanations in how you described the problem, I can only say that there must be something wrong with how you are setting the time zone.
Try using tzutil.exe on an Administrator elevated command prompt. tzutil /g will give you the current time zone setting. tzutil /s "Eastern Standard Time" will set your time zone for US Eastern Time. Be sure to restart your application after changing the time zone, either by recycling the application pool in the management console, using iisreset, restarting IIS, or (if you must) rebooting the server.
You can also just make the change through the time zone control panel.
If you are saying you've done all of that, and you're getting "Eastern Standard Time" back from tzutil /g, but TimeZoneInfo.Local.Id is returning "Pacific Standard Time" even though you've rebooted, then I call BS. That's just not possible. Perhaps there's a simpler explanation, such as maybe you're deploying to multiple servers and you're setting the time zone on a different server than you're getting the results from.

Calculate DateTime from NTP timestamp on embedded device

I have a very limited environment which have no standard linux/unix date/time API and have to synchronize clock against NTP server. I can communicate via UDP and get NTP reply. Now i need to convert NTP timestamp to the device date/time completly by myself.
I've found several ntp implementations (qntp, c#, java) but they all using system wide functions to convert NTP timestamp to the corresponding DateTime implementation.
Any avdice to how to convert or any links where i can read about such a conversion will be very appreciated.