Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Access the "Z" zulu-timezone designator on the end of punctuation-less datetime values. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
c464947f8dee606d35a0333212373621 |
| User & Date: | drh 2024-12-26 11:51:45.119 |
Context
|
2024-12-26
| ||
| 12:03 | Allow the optional "Z" zulu-time designator even on 8-character punctuationless date-time values. check-in: 3a3ce2fc65 user: drh tags: trunk | |
| 11:51 | Access the "Z" zulu-timezone designator on the end of punctuation-less datetime values. check-in: c464947f8d user: drh tags: trunk | |
| 11:19 | Document the timeline-utc setting. Provide C-language interfaces to access that setting consistently. check-in: b1bb31e838 user: drh tags: trunk | |
Changes
Changes to src/name.c.
| ︙ | ︙ | |||
63 64 65 66 67 68 69 |
**
** If the bVerifyNotAHash flag is true, then a check is made to see if
** the string is a hash prefix and NULL is returned if it is. If the
** bVerifyNotAHash flag is false, then the result is determined by syntax
** of the input string only, without reference to the artifact table.
*/
char *fossil_expand_datetime(const char *zIn, int bVerifyNotAHash){
| | > | > > > > | > > > > > > > | | > | 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
**
** If the bVerifyNotAHash flag is true, then a check is made to see if
** the string is a hash prefix and NULL is returned if it is. If the
** bVerifyNotAHash flag is false, then the result is determined by syntax
** of the input string only, without reference to the artifact table.
*/
char *fossil_expand_datetime(const char *zIn, int bVerifyNotAHash){
static char zEDate[24];
static const char aPunct[] = { 0, 0, '-', '-', ' ', ':', ':' };
int n = (int)strlen(zIn);
int i, j;
int addZulu = 0;
/* These forms are allowed:
**
** (1) YYYYMMDD
** (2) YYYYMMDDHHMM
** (3) YYYYMMDDHHMMSS
**
** Forms (2) and (3) may be followed by a "Z" zulu timezone designator,
** which is carried through into the output.
*/
if( n!=8 && n!=12 && n!=14 ){
if( (n==13 || n==15) && (zIn[12]=='z' || zIn[12]=='Z') ){
n--;
addZulu = 1;
}else{
return 0;
}
}
/* Every character must be a digit */
for(i=0; fossil_isdigit(zIn[i]); i++){}
if( i!=n && (!addZulu || i!=n+1) ) return 0;
/* Expand the date */
for(i=j=0; i<n; i++){
if( i>=4 && (i%2)==0 ){
zEDate[j++] = aPunct[i/2];
}
zEDate[j++] = zIn[i];
}
if( addZulu ) zEDate[j++] = 'Z';
zEDate[j] = 0;
/* Check for reasonable date values.
** Offset references:
** YYYY-MM-DD HH:MM:SS
** 0123456789 12345678
*/
|
| ︙ | ︙ | |||
109 110 111 112 113 114 115 |
if( i>24 ) return 0;
i = atoi(zEDate+14);
if( i>60 ) return 0;
if( n==14 && atoi(zEDate+17)>60 ) return 0;
}
/* The string is not also a hash prefix */
| | | 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 |
if( i>24 ) return 0;
i = atoi(zEDate+14);
if( i>60 ) return 0;
if( n==14 && atoi(zEDate+17)>60 ) return 0;
}
/* The string is not also a hash prefix */
if( bVerifyNotAHash && !addZulu ){
if( db_exists("SELECT 1 FROM blob WHERE uuid GLOB '%q*'",zIn) ) return 0;
}
/* It looks like this may be a date. Return it with punctuation added. */
return zEDate;
}
|
| ︙ | ︙ |