| 1956 | // whether the "European" time format flag is set or not. |
| 1957 | |
| 1958 | char *SzTimeR(int hr, int min, int sec, int mil) |
| 1959 | { |
| 1960 | static char szTim[16]; |
| 1961 | flag fSecond = !(sec < 0 || (us.fSecondHide && (sec == 0 && mil < 0))); |
| 1962 | |
| 1963 | while (min >= 60) { |
| 1964 | min -= 60; |
| 1965 | hr++; |
| 1966 | } |
| 1967 | while (hr < 0) |
| 1968 | hr += 24; |
| 1969 | while (hr >= 24) |
| 1970 | hr -= 24; |
| 1971 | if (us.fAnsiChar == 4) { |
| 1972 | // Format like "01:23:45 PM", as seen in Quick*Chart files. |
| 1973 | sprintf(szTim, "%02d:%02d:%02d %cM", |
| 1974 | Mod12(hr), min, sec, hr < 12 ? 'A' : 'P'); |
| 1975 | return szTim; |
| 1976 | } |
| 1977 | if (us.fEuroTime) { |
| 1978 | if (!fSecond) |
| 1979 | sprintf(szTim, "%2d:%02d", hr, min); |
| 1980 | else if (mil < 0) |
| 1981 | sprintf(szTim, "%2d:%02d:%02d", hr, min, sec); |
| 1982 | else |
| 1983 | sprintf(szTim, "%2d:%02d:%02d.%03d", hr, min, sec, mil); |
| 1984 | } else { |
| 1985 | if (!fSecond) |
| 1986 | sprintf(szTim, "%2d:%02d%cm", Mod12(hr), min, hr < 12 ? 'a' : 'p'); |
| 1987 | else if (mil < 0) |
| 1988 | sprintf(szTim, "%2d:%02d:%02d%cm", |
| 1989 | Mod12(hr), min, sec, hr < 12 ? 'a' : 'p'); |
| 1990 | else |
| 1991 | sprintf(szTim, "%2d:%02d:%02d.%03d%cm", |
| 1992 | Mod12(hr), min, sec, mil, hr < 12 ? 'a' : 'p'); |
| 1993 | } |
| 1994 | is.ichLocSplit = fSecond; // Flag whether seconds were output. |
| 1995 | return szTim; |
| 1996 | } |
| 1997 | |
| 1998 | |
| 1999 | // This just determines the correct hour and minute and calls the above. |