1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************* 385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho* Copyright (C) 2004 - 2008, International Business Machines Corporation and 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* others. All Rights Reserved. 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru******************************************************************************* 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef UTMSCALE_H 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define UTMSCALE_H 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h" 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \file 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \brief C API: Universal Time Scale 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * There are quite a few different conventions for binary datetime, depending on different 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * platforms and protocols. Some of these have severe drawbacks. For example, people using 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Unix time (seconds since Jan 1, 1970) think that they are safe until near the year 2038. 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * But cases can and do arise where arithmetic manipulations causes serious problems. Consider 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * the computation of the average of two datetimes, for example: if one calculates them with 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>averageTime = (time1 + time2)/2</code>, there will be overflow even with dates 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * around the present. Moreover, even if these problems don't occur, there is the issue of 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * conversion back and forth between different systems. 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p> 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Binary datetimes differ in a number of ways: the datatype, the unit, 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * and the epoch (origin). We'll refer to these as time scales. For example: 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <table border="1" cellspacing="0" cellpadding="4"> 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <caption>Table 1: Binary Time Scales</caption> 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <th align="left">Source</th> 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <th align="left">Datatype</th> 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <th align="left">Unit</th> 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <th align="left">Epoch</th> 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>UDTS_JAVA_TIME</td> 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>int64_t</td> 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>milliseconds</td> 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>Jan 1, 1970</td> 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>UDTS_UNIX_TIME</td> 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>int32_t or int64_t</td> 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>seconds</td> 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>Jan 1, 1970</td> 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>UDTS_ICU4C_TIME</td> 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>double</td> 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>milliseconds</td> 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>Jan 1, 1970</td> 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>UDTS_WINDOWS_FILE_TIME</td> 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>int64_t</td> 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>ticks (100 nanoseconds)</td> 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>Jan 1, 1601</td> 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>UDTS_DOTNET_DATE_TIME</td> 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>int64_t</td> 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>ticks (100 nanoseconds)</td> 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>Jan 1, 0001</td> 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>UDTS_MAC_OLD_TIME</td> 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>int32_t or int64_t</td> 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>seconds</td> 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>Jan 1, 1904</td> 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>UDTS_MAC_TIME</td> 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>double</td> 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>seconds</td> 86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>Jan 1, 2001</td> 87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>UDTS_EXCEL_TIME</td> 91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>?</td> 92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>days</td> 93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>Dec 31, 1899</td> 94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>UDTS_DB2_TIME</td> 98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>?</td> 99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>days</td> 100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>Dec 31, 1899</td> 101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>UDTS_UNIX_MICROSECONDS_TIME</td> 105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>int64_t</td> 106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>microseconds</td> 107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>Jan 1, 1970</td> 108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </table> 110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p> 112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * All of the epochs start at 00:00 am (the earliest possible time on the day in question), 113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * and are assumed to be UTC. 114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p> 116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The ranges for different datatypes are given in the following table (all values in years). 117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The range of years includes the entire range expressible with positive and negative 118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * values of the datatype. The range of years for double is the range that would be allowed 119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * without losing precision to the corresponding unit. 120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <table border="1" cellspacing="0" cellpadding="4"> 122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <th align="left">Units</th> 124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <th align="left">int64_t</th> 125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <th align="left">double</th> 126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <th align="left">int32_t</th> 127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>1 sec</td> 131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">5.84542x10<sup>11</sup></td> 132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">285,420,920.94</td> 133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">136.10</td> 134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>1 millisecond</td> 138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">584,542,046.09</td> 139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">285,420.92</td> 140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">0.14</td> 141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>1 microsecond</td> 144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">584,542.05</td> 146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">285.42</td> 147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">0.00</td> 148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>100 nanoseconds (tick)</td> 151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">58,454.20</td> 152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">28.54</td> 153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">0.00</td> 154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tr> 156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td>1 nanosecond</td> 157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">584.5420461</td> 158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">0.2854</td> 159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <td align="right">0.00</td> 160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </tr> 161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * </table> 162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p> 164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * These functions implement a universal time scale which can be used as a 'pivot', 165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * and provide conversion functions to and from all other major time scales. 166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This datetimes to be converted to the pivot time, safely manipulated, 167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * and converted back to any other datetime time scale. 168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *<p> 170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * So what to use for this pivot? Java time has plenty of range, but cannot represent 171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * .NET <code>System.DateTime</code> values without severe loss of precision. ICU4C time addresses this by using a 172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>double</code> that is otherwise equivalent to the Java time. However, there are disadvantages 173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * with <code>doubles</code>. They provide for much more graceful degradation in arithmetic operations. 174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * But they only have 53 bits of accuracy, which means that they will lose precision when 175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * converting back and forth to ticks. What would really be nice would be a 176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>long double</code> (80 bits -- 64 bit mantissa), but that is not supported on most systems. 177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *<p> 179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The Unix extended time uses a structure with two components: time in seconds and a 180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * fractional field (microseconds). However, this is clumsy, slow, and 181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * prone to error (you always have to keep track of overflow and underflow in the 182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * fractional field). <code>BigDecimal</code> would allow for arbitrary precision and arbitrary range, 183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * but we do not want to use this as the normal type, because it is slow and does not 184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * have a fixed size. 185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *<p> 187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Because of these issues, we ended up concluding that the .NET framework's 188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>System.DateTime</code> would be the best pivot. However, we use the full range 189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * allowed by the datatype, allowing for datetimes back to 29,000 BC and up to 29,000 AD. 190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * This time scale is very fine grained, does not lose precision, and covers a range that 191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * will meet almost all requirements. It will not handle the range that Java times do, 192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * but frankly, being able to handle dates before 29,000 BC or after 29,000 AD is of very limited interest. 193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>UDateTimeScale</code> values are used to specify the time scale used for 198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * conversion into or out if the universal time scale. 199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef enum UDateTimeScale { 203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used in the JDK. Data is a Java <code>long</code> (<code>int64_t</code>). Value 205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * is milliseconds since January 1, 1970. 206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_JAVA_TIME = 0, 210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used on Unix systems. Data is <code>int32_t</code> or <code>int64_t</code>. Value 213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * is seconds since January 1, 1970. 214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_UNIX_TIME, 218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used in IUC4C. Data is a <code>double</code>. Value 221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * is milliseconds since January 1, 1970. 222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_ICU4C_TIME, 226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used in Windows for file times. Data is an <code>int64_t</code>. Value 229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * is ticks (1 tick == 100 nanoseconds) since January 1, 1601. 230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 232ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 233ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_WINDOWS_FILE_TIME, 234ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 235ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 236ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used in the .NET framework's <code>System.DateTime</code> structure. Data is an <code>int64_t</code>. Value 237ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * is ticks (1 tick == 100 nanoseconds) since January 1, 0001. 238ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 239ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 240ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 241ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_DOTNET_DATE_TIME, 242ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 243ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 244ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used in older Macintosh systems. Data is <code>int32_t</code> or <code>int64_t</code>. Value 245ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * is seconds since January 1, 1904. 246ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 247ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 248ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 249ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_MAC_OLD_TIME, 250ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 251ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 252ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used in newer Macintosh systems. Data is a <code>double</code>. Value 253ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * is seconds since January 1, 2001. 254ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 255ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 256ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 257ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_MAC_TIME, 258ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 259ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 260ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used in Excel. Data is an <code>?unknown?</code>. Value 261ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * is days since December 31, 1899. 262ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 263ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 264ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 265ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_EXCEL_TIME, 266ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 267ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 268ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Used in DB2. Data is an <code>?unknown?</code>. Value 269ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * is days since December 31, 1899. 270ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 271ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 272ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 273ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_DB2_TIME, 274ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 275ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 276ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Data is a <code>long</code>. Value is microseconds since January 1, 1970. 277ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Similar to Unix time (linear value from 1970) and struct timeval 278ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * (microseconds resolution). 279ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 28085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @stable ICU 3.8 281ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 282ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_UNIX_MICROSECONDS_TIME, 283ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 284ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 285ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The first unused time scale value. The limit of this enum 286ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 287ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UDTS_MAX_SCALE 288ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} UDateTimeScale; 289ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 290ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 291ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>UTimeScaleValue</code> values are used to specify the time scale values 292ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * to <code>utmscale_getTimeScaleValue</code>. 293ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 294ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 295ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 296ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 297ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 298ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querutypedef enum UTimeScaleValue { 299ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 300ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the units vale 301ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 302ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 303ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 304ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 305ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 306ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 307ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_UNITS_VALUE = 0, 308ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 309ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 310ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the epoch offset value 311ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 312ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 313ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 314ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 315ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 316ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 317ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_EPOCH_OFFSET_VALUE=1, 318ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 319ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 320ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the minimum from value 321ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 322ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 323ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 324ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 325ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 326ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 327ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_FROM_MIN_VALUE=2, 328ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 329ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 330ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the maximum from value 331ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 332ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 333ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 334ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 335ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 336ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 337ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_FROM_MAX_VALUE=3, 338ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 339ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 340ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the minimum to value 341ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 342ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 343ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 344ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 345ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 346ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 347ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_TO_MIN_VALUE=4, 348ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 349ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 350ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the maximum to value 351ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 352ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 353ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 354ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 355ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 356ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 357ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_TO_MAX_VALUE=5, 358ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 359ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef U_HIDE_INTERNAL_API 360ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 361ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the epoch plus one value 362ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 363ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 364ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * NOTE: This is an internal value. DO NOT USE IT. May not 365ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * actually be equal to the epoch offset value plus one. 366ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 367ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 368ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 369ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal ICU 3.2 370ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 371ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_EPOCH_OFFSET_PLUS_1_VALUE=6, 372ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 373ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 374ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the epoch plus one value 375ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 376ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 377ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * NOTE: This is an internal value. DO NOT USE IT. May not 378ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * actually be equal to the epoch offset value plus one. 379ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 380ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 381ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 382ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal ICU 3.2 383ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 384ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_EPOCH_OFFSET_MINUS_1_VALUE=7, 385ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 386ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 387ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the units round value 388ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 389ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 390ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * NOTE: This is an internal value. DO NOT USE IT. 391ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 392ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 393ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 394ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal ICU 3.2 395ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 396ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_UNITS_ROUND_VALUE=8, 397ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 398ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 399ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the minimum safe rounding value 400ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 401ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 402ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * NOTE: This is an internal value. DO NOT USE IT. 403ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 404ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 405ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 406ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal ICU 3.2 407ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 408ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_MIN_ROUND_VALUE=9, 409ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 410ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 411ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The constant used to select the maximum safe rounding value 412ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * for a time scale. 413ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 414ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * NOTE: This is an internal value. DO NOT USE IT. 415ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 416ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 417ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 418ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @internal ICU 3.2 419ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 420ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_MAX_ROUND_VALUE=10, 421ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 422ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* U_HIDE_INTERNAL_API */ 423ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 424ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 425ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * The number of time scale values, in other words limit of this enum. 426ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 427ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @see utmscale_getTimeScaleValue 428ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 429ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTSV_MAX_SCALE_VALUE=11 430ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 431ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} UTimeScaleValue; 432ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 433ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 434ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Get a value associated with a particular time scale. 435ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 436ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param timeScale The time scale 437ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param value A constant representing the value to get 438ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param status The status code. Set to <code>U_ILLEGAL_ARGUMENT_ERROR</code> if arguments are invalid. 439ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return - the value. 440ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 441ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 442ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 443ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_STABLE int64_t U_EXPORT2 444ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru utmscale_getTimeScaleValue(UDateTimeScale timeScale, UTimeScaleValue value, UErrorCode *status); 445ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 446ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* Conversion to 'universal time scale' */ 447ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 448ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 449ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Convert a <code>int64_t</code> datetime from the given time scale to the universal time scale. 450ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 451ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param otherTime The <code>int64_t</code> datetime 452ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param timeScale The time scale to convert from 453ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param status The status code. Set to <code>U_ILLEGAL_ARGUMENT_ERROR</code> if the conversion is out of range. 454ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 455ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return The datetime converted to the universal time scale 456ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 457ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 458ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 459ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_STABLE int64_t U_EXPORT2 460ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru utmscale_fromInt64(int64_t otherTime, UDateTimeScale timeScale, UErrorCode *status); 461ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 462ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* Conversion from 'universal time scale' */ 463ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 464ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 465ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Convert a datetime from the universal time scale to a <code>int64_t</code> in the given time scale. 466ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 467ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param universalTime The datetime in the universal time scale 468ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param timeScale The time scale to convert to 469ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param status The status code. Set to <code>U_ILLEGAL_ARGUMENT_ERROR</code> if the conversion is out of range. 470ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 471ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return The datetime converted to the given time scale 472ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 473ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @stable ICU 3.2 474ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 475ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_STABLE int64_t U_EXPORT2 476ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru utmscale_toInt64(int64_t universalTime, UDateTimeScale timeScale, UErrorCode *status); 477ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 478ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 479ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 480ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 481ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 482