mirror of
				https://github.com/therootcompany/tz.js.git
				synced 2024-11-16 17:29:01 +00:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "6a095b0966704f61bb1a66e544320e5557d93318" and "7acf670aa62a72a3a1f5c67b4f2c8507cba3502e" have entirely different histories.
		
	
	
		
			6a095b0966
			...
			7acf670aa6
		
	
		
| @ -8,13 +8,6 @@ in ~100 LoC. For Node.js & Browsers. | |||||||
| XTZ is a poor man's `Temporal` polyfill, but just for time zones. \ | XTZ is a poor man's `Temporal` polyfill, but just for time zones. \ | ||||||
| Demo: <https://therootcompany.github.io/tz.js/> | Demo: <https://therootcompany.github.io/tz.js/> | ||||||
| 
 | 
 | ||||||
| ```js |  | ||||||
| // What's the current time, in ISO format? |  | ||||||
| 
 |  | ||||||
| TZ.toLocalISOString(new Date()); // "2021-11-07T03:15:59.000-0500" |  | ||||||
| TZ.timeZone(); // "America/New_York" |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| > What UTC time will it be when it's 3:15am in New York? | > What UTC time will it be when it's 3:15am in New York? | ||||||
| 
 | 
 | ||||||
| ```js | ```js | ||||||
| @ -105,7 +98,6 @@ https://www.youtube.com/playlist?list=PLxki0D-ilnqa6horOJ2G18WMZlJeQFlAt | |||||||
| 
 | 
 | ||||||
| # API | # API | ||||||
| 
 | 
 | ||||||
| - `toLocalISOString(dateOrNull)` |  | ||||||
| - `toTimeZone(utcDate, timeZone)` | - `toTimeZone(utcDate, timeZone)` | ||||||
| - `toTimeZoneISOString(isoString, timeZone)` | - `toTimeZoneISOString(isoString, timeZone)` | ||||||
| - `toUTC(dtString, timeZone)` | - `toUTC(dtString, timeZone)` | ||||||
|  | |||||||
							
								
								
									
										15
									
								
								index.html
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								index.html
									
									
									
									
									
								
							| @ -86,18 +86,6 @@ String(((new Date()).getTimezoneOffset() % 60)).padStart(2, '0')</code></pre> | |||||||
| 
 | 
 | ||||||
|     <hr /> |     <hr /> | ||||||
| 
 | 
 | ||||||
|     <form class="js-local"> |  | ||||||
|       <h3>Local ISO+Offset String:</h3> |  | ||||||
|       <pre><code>XTZ.toLocalISOString(new Date())</code></pre> |  | ||||||
|       <label> |  | ||||||
|         ISO: |  | ||||||
|         <input class="js-my-dt-local" type="text" disabled /> |  | ||||||
|       </label> |  | ||||||
|       <br /> |  | ||||||
|     </form> |  | ||||||
| 
 |  | ||||||
|     <hr /> |  | ||||||
| 
 |  | ||||||
|     <form class="js-tz2utc"> |     <form class="js-tz2utc"> | ||||||
|       <h3>Relative TimeZone to Absolute UTC:</h3> |       <h3>Relative TimeZone to Absolute UTC:</h3> | ||||||
|       <pre><code>XTZ.toUTC("<span class="js-dtx-tz">YYYY-03-14 03:15:69.000</span>", "<span class="js-tzx-tz">UTC</span>") |       <pre><code>XTZ.toUTC("<span class="js-dtx-tz">YYYY-03-14 03:15:69.000</span>", "<span class="js-tzx-tz">UTC</span>") | ||||||
| @ -194,7 +182,6 @@ Asia/Kolkata        +0530 (No DST) (30-min)</pre | |||||||
|       >github.com/therootcompany/tz.js</a |       >github.com/therootcompany/tz.js</a | ||||||
|     > |     > | ||||||
|     <script src="./xtz.js"></script> |     <script src="./xtz.js"></script> | ||||||
|     <script src="./tolocalisostring.js"></script> |  | ||||||
|     <script> |     <script> | ||||||
|       function $(sel, el) { |       function $(sel, el) { | ||||||
|         return (el || document.body).querySelector(sel); |         return (el || document.body).querySelector(sel); | ||||||
| @ -235,8 +222,6 @@ Asia/Kolkata        +0530 (No DST) (30-min)</pre | |||||||
|         $(".js-my-dt-xtz").value = translate(curDt, inTz, outTz).toISOString(); |         $(".js-my-dt-xtz").value = translate(curDt, inTz, outTz).toISOString(); | ||||||
|       } |       } | ||||||
| 
 | 
 | ||||||
|       $(".js-my-dt-local").value = XTZ.toLocalISOString(); |  | ||||||
| 
 |  | ||||||
|       var myTz = new Intl.DateTimeFormat("default", {}).resolvedOptions() |       var myTz = new Intl.DateTimeFormat("default", {}).resolvedOptions() | ||||||
|         .timeZone; |         .timeZone; | ||||||
|       $(".js-my-tz").innerText = myTz; |       $(".js-my-tz").innerText = myTz; | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "xtz", |   "name": "xtz", | ||||||
|   "version": "1.1.1", |   "version": "1.0.2", | ||||||
|   "description": "A fast, lightweight, zero-dependency library to translate between Time Zones and UTC with native Intl.DateTimeFormat in ~100 LoC. For Node.js & Browsers.", |   "description": "A fast, lightweight, zero-dependency library to translate between Time Zones and UTC with native Intl.DateTimeFormat in ~100 LoC. For Node.js & Browsers.", | ||||||
|   "main": "xtz.js", |   "main": "xtz.js", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|  | |||||||
| @ -1,50 +0,0 @@ | |||||||
| (function (exports) { |  | ||||||
|   "use strict"; |  | ||||||
| 
 |  | ||||||
|   // See <https://github.com/coolaj86/AJScript/issues/27>
 |  | ||||||
| 
 |  | ||||||
|   function toLocalISOString(dateOrStr) { |  | ||||||
|     var d; |  | ||||||
|     if (dateOrStr) { |  | ||||||
|       d = new Date(dateOrStr); |  | ||||||
|     } else { |  | ||||||
|       d = new Date(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     var YYYY = d.getFullYear(); |  | ||||||
|     var MM = p2(d.getMonth() + 1); |  | ||||||
|     var DD = p2(d.getDate()); |  | ||||||
|     var hh = p2(d.getHours()); |  | ||||||
|     var mm = p2(d.getMinutes()); |  | ||||||
|     var ss = p2(d.getSeconds()); |  | ||||||
|     var sss = d.getMilliseconds().toString().padStart(3, "0"); |  | ||||||
| 
 |  | ||||||
|     var offset = formatOffset(-d.getTimezoneOffset()); |  | ||||||
| 
 |  | ||||||
|     return `${YYYY}-${MM}-${DD}T${hh}:${mm}:${ss}.${sss}${offset}`; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   function formatOffset(minutes) { |  | ||||||
|     if (!minutes) { |  | ||||||
|       return "Z"; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     var h = Math.floor(Math.abs(minutes) / 60); |  | ||||||
|     var m = Math.abs(minutes) % 60; |  | ||||||
|     var offset = ""; |  | ||||||
|     if (minutes > 0) { |  | ||||||
|       offset = "+"; |  | ||||||
|     } else if (minutes < 0) { |  | ||||||
|       offset = "-"; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // +0500, -0730
 |  | ||||||
|     return offset + p2(h) + p2(m); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   function p2(x) { |  | ||||||
|     return String(x).padStart(2, "0"); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   exports.toLocalISOString = toLocalISOString; |  | ||||||
| })(("undefined" === typeof module && window) || exports); |  | ||||||
							
								
								
									
										28
									
								
								xtz.js
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								xtz.js
									
									
									
									
									
								
							| @ -98,7 +98,9 @@ var XTZ; | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // +0500, -0730
 |     // +0500, -0730
 | ||||||
|     return offset + p2(h) + p2(m); |     return ( | ||||||
|  |       offset + h.toString().padStart(2, "0") + m.toString().padStart(2, "0") | ||||||
|  |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   function toOffsetISOString(d) { |   function toOffsetISOString(d) { | ||||||
| @ -153,27 +155,6 @@ var XTZ; | |||||||
|     return toOffsetISOString(whole); |     return toOffsetISOString(whole); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   function toLocalISOString(dateOrStr) { |  | ||||||
|     var d; |  | ||||||
|     if (dateOrStr) { |  | ||||||
|       d = new Date(dateOrStr); |  | ||||||
|     } else { |  | ||||||
|       d = new Date(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     var YYYY = d.getFullYear(); |  | ||||||
|     var MM = p2(d.getMonth() + 1); |  | ||||||
|     var DD = p2(d.getDate()); |  | ||||||
|     var hh = p2(d.getHours()); |  | ||||||
|     var mm = p2(d.getMinutes()); |  | ||||||
|     var ss = p2(d.getSeconds()); |  | ||||||
|     var sss = d.getMilliseconds().toString().padStart(3, "0"); |  | ||||||
| 
 |  | ||||||
|     var offset = formatOffset(-d.getTimezoneOffset()); |  | ||||||
| 
 |  | ||||||
|     return `${YYYY}-${MM}-${DD}T${hh}:${mm}:${ss}.${sss}${offset}`; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   XTZ = { |   XTZ = { | ||||||
|     // bespoke date =>
 |     // bespoke date =>
 | ||||||
|     // 2021-11-07T3:15:59-0500
 |     // 2021-11-07T3:15:59-0500
 | ||||||
| @ -182,9 +163,6 @@ var XTZ; | |||||||
|     // -240 => -0400
 |     // -240 => -0400
 | ||||||
|     formatOffset: formatOffset, |     formatOffset: formatOffset, | ||||||
| 
 | 
 | ||||||
|     // new Date() => "2021-11-07T03:15:59-0500"
 |  | ||||||
|     toLocalISOString: toLocalISOString, |  | ||||||
| 
 |  | ||||||
|     // [ "2021-11-07T08:15:59Z", "America/New_York" ]
 |     // [ "2021-11-07T08:15:59Z", "America/New_York" ]
 | ||||||
|     // => "2021-11-07T03:15:59-0500" // 2021-11-07 03:15:59
 |     // => "2021-11-07T03:15:59-0500" // 2021-11-07 03:15:59
 | ||||||
|     toTimeZone: toTimeZone, |     toTimeZone: toTimeZone, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user