NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
Steve and Bob, I said: > > > Digging around in the various examples and docs, I have not been able > > > to figure out how to do the equivalent using the Java units package. > > > Can somebody please provide me with a pointer a specific example or > > > tutorial that covers this? > > Steve said: > > Regretably, the VisAD units subsystem does not yet contain an equivalent > > of the "valtocal" function. At the moment, the best advice I can give > > is to use the standard Java date and time-handling classes to do what > > you want (e.g. the "Data" and "Calendar" classes in the "java.util" > > package). > > > Bob said: > > > i haven't contributed too many answers to the VisAD mailing list. > > > But i do know how to use a (simple) timer in Java. Here's a > > > simple timer class: > > > public class QuestionTimer { Thanks to Steve for the suggestions and Bob for the sample code. Once I looked into it deeper using the Date and Calendar classes along with the SimpleDateFormat class worked out quite well. In case anybody else struggling with this, the quick and dirty code I hacked up is below. Roland (No doubt I should use the units package to get conversion factors I need. That will be for the Version 1.1) -- Roland Schweitzer NOAA-CIRES Climate Diagnostics Center 325 Broadway NOAA/ERL/CDC - (R/CDC1) Boulder, CO 80303 .... (303) 497-6249 .... (303) 497-7013 FAX .... rhs@xxxxxxxxxxxx .... =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- import java.util.*; import java.text.*; /** * Classes to convert COARDS times to calendar times. * * @author R.H. Schweitzer * @version 1.0, 12/2000 */ public class ConvertTime { //instance variables long HoursFactor = 3600000; long HoursPerDay = 24; public Calendar doubleToCalendar(String Units, double value) { Calendar theCalendar; long millis; theCalendar = Calendar.getInstance(); theCalendar.setTimeZone(TimeZone.getTimeZone("UTC")); if ( Units.toLowerCase().startsWith("hours since") ) { millis = (long) value * HoursFactor; } if ( Units.toLowerCase().startsWith("days since") ) { millis = (long) value * HoursFactor * HoursPerDay; } else { millis = 0; } SimpleDateFormat formatter new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",new Locale("en","US")); formatter.setTimeZone(TimeZone.getTimeZone("UTC")); try { Date origin formatter.parse(Units.substring(Units.indexOf("since ")+6)); millis = millis + origin.getTime(); theCalendar.setTime(new Date(millis)); } catch (Exception e) { System.out.println("Could not parse time unit. "+e.toString()); } return theCalendar; } }
visad
archives: