You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							243 lines
						
					
					
						
							5.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							243 lines
						
					
					
						
							5.3 KiB
						
					
					
				| # Time Examples — Practical Patterns | |
| 
 | |
| > **Agent role**: Reference this file for practical examples and | |
|   patterns when working with time handling in development. | |
| 
 | |
| ## Examples | |
| 
 | |
| ### Good | |
| 
 | |
| - "Feature flag rollout started on `2025-08-01` and will be reviewed on | |
| 
 | |
|   `2025-08-21`." | |
| 
 | |
| - "Migration applied on `2025-07-15T14:00Z`." | |
| 
 | |
| - "Issue reproduced on `2025-08-17T09:00-05:00 (local)` / | |
| 
 | |
|   `2025-08-17T14:00Z (UTC)`." | |
| 
 | |
| ### Bad | |
| 
 | |
| - "Feature flag rolled out last week." | |
| 
 | |
| - "Migration applied recently." | |
| 
 | |
| - "Now is August, so we assume this was last month." | |
| 
 | |
| ### More Examples | |
| 
 | |
| #### Issue Reports | |
| 
 | |
| - ✅ **Good**: "User reported login failure at `2025-08-17T14:30:00Z`. Issue | |
| 
 | |
|   persisted until `2025-08-17T15:45:00Z`." | |
| 
 | |
| - ❌ **Bad**: "User reported login failure earlier today. Issue lasted for a | |
| 
 | |
|   while." | |
| 
 | |
| #### Release Planning | |
| 
 | |
| - ✅ **Good**: "Feature X scheduled for release on `2025-08-25`. Testing | |
| 
 | |
|   window: `2025-08-20` to `2025-08-24`." | |
| 
 | |
| - ❌ **Bad**: "Feature X will be released next week after testing." | |
| 
 | |
| #### Performance Monitoring | |
| 
 | |
| - ✅ **Good**: "Baseline performance measured on `2025-08-10T09:00:00Z`. | |
| 
 | |
|   Regression detected on `2025-08-15T14:00:00Z`." | |
| 
 | |
| - ❌ **Bad**: "Performance was good last week but got worse this week." | |
| 
 | |
| ## Technical Implementation Examples | |
| 
 | |
| ### Database Storage | |
| 
 | |
| ```sql | |
| 
 | |
| -- ✅ Good: Store in UTC | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | |
| 
 | |
| -- ❌ Bad: Store in local time | |
| created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | |
| updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | |
| 
 | |
| ``` | |
| 
 | |
| ### API Responses | |
| 
 | |
| ```json | |
| 
 | |
| // ✅ Good: Include both UTC and local time | |
| { | |
|   "eventTime": "2025-08-17T14:00:00Z", | |
|   "localTime": "2025-08-17T10:00:00-04:00", | |
|   "timezone": "America/New_York" | |
| } | |
| 
 | |
| // ❌ Bad: Only local time | |
| { | |
|   "eventTime": "2025-08-17T10:00:00-04:00" | |
| } | |
| 
 | |
| ``` | |
| 
 | |
| ### Logging | |
| 
 | |
| ```python | |
| 
 | |
| # ✅ Good: Log in UTC with timezone info | |
| 
 | |
| logger.info(f"User action at {datetime.utcnow().isoformat()}Z (UTC)") | |
| 
 | |
| # ❌ Bad: Log in local time | |
| 
 | |
| logger.info(f"User action at {datetime.now()}") | |
| 
 | |
| ``` | |
| 
 | |
| ## Timezone Handling Examples | |
| 
 | |
| ### Good Timezone Usage | |
| 
 | |
| ```typescript | |
| 
 | |
| // ✅ Good: Store UTC, convert for display | |
| const eventTime = new Date().toISOString(); // Store in UTC | |
| const localTime = new Date().toLocaleString('en-US', { | |
|   timeZone: 'America/New_York' | |
| }); // Convert for display | |
| 
 | |
| // ✅ Good: Include timezone context | |
| const timestamp = { | |
|   utc: "2025-08-17T14:00:00Z", | |
|   local: "2025-08-17T10:00:00-04:00", | |
|   timezone: "America/New_York" | |
| }; | |
| 
 | |
| ``` | |
| 
 | |
| ### Bad Timezone Usage | |
| 
 | |
| ```typescript | |
| 
 | |
| // ❌ Bad: Assume timezone | |
| const now = new Date(); // Assumes system timezone | |
| 
 | |
| // ❌ Bad: Mix formats | |
| const timestamp = "2025-08-17 10:00 AM"; // Ambiguous format | |
| 
 | |
| ``` | |
| 
 | |
| ## Common Patterns | |
| 
 | |
| ### Date Range References | |
| 
 | |
| ```typescript | |
| 
 | |
| // ✅ Good: Explicit date ranges | |
| const dateRange = { | |
|   start: "2025-08-01T00:00:00Z", | |
|   end: "2025-08-31T23:59:59Z" | |
| }; | |
| 
 | |
| // ❌ Bad: Relative ranges | |
| const dateRange = { | |
|   start: "beginning of month", | |
|   end: "end of month" | |
| }; | |
| 
 | |
| ``` | |
| 
 | |
| ### Duration References | |
| 
 | |
| ```typescript | |
| 
 | |
| // ✅ Good: Specific durations | |
| const duration = { | |
|   value: 30, | |
|   unit: "days", | |
|   startDate: "2025-08-01T00:00:00Z" | |
| }; | |
| 
 | |
| // ❌ Bad: Vague durations | |
| const duration = "about a month"; | |
| 
 | |
| ``` | |
| 
 | |
| ### Version References | |
| 
 | |
| ```typescript | |
| 
 | |
| // ✅ Good: Version with date | |
| const version = { | |
|   number: "1.2.3", | |
|   releaseDate: "2025-08-17T10:00:00Z", | |
|   buildDate: "2025-08-17T09:30:00Z" | |
| }; | |
| 
 | |
| // ❌ Bad: Version without context | |
| const version = "latest"; | |
| 
 | |
| ``` | |
| 
 | |
| ## References | |
| 
 | |
| - [ISO 8601 Date and Time Standard](https://en.wikipedia.org/wiki/ISO_8601) | |
| 
 | |
| - [IANA Timezone Database](https://www.iana.org/time-zones) | |
| 
 | |
| - [ADR Template](./adr_template.md) | |
| 
 | |
| - [Research & Diagnostic Workflow](./research_diagnostic.mdc) | |
| 
 | |
| --- | |
| 
 | |
| **Rule of Thumb**: Every time reference in development artifacts should be | |
| **clear in 6 months without context**, and aligned to the **developer's actual | |
| current time**. | |
| 
 | |
| **Technical Rule of Thumb**: **Store in UTC, display in local time, always | |
| include timezone context.** | |
| 
 | |
| --- | |
| 
 | |
| **See also**: | |
| 
 | |
| - `.cursor/rules/development/time.mdc` for core principles | |
| 
 | |
| - `.cursor/rules/development/time_implementation.mdc` for implementation instructions | |
| 
 | |
| **Status**: Active examples and patterns | |
| **Priority**: Medium | |
| **Estimated Effort**: Ongoing reference | |
| **Dependencies**: time.mdc, time_implementation.mdc | |
| **Stakeholders**: Development team, Documentation team | |
| 
 | |
| ## Model Implementation Checklist | |
| 
 | |
| ### Before Time Implementation | |
| 
 | |
| - [ ] **Time Context**: Understand what time information needs to be implemented | |
| - [ ] **Format Review**: Review time formatting standards (UTC, ISO 8601) | |
| - [ ] **Platform Check**: Identify platform-specific time requirements | |
| - [ ] **User Context**: Consider user's timezone and display preferences | |
| 
 | |
| ### During Time Implementation | |
| 
 | |
| - [ ] **UTC Storage**: Use UTC for all system and log timestamps | |
| - [ ] **Format Consistency**: Apply consistent time formatting patterns | |
| - [ ] **Timezone Handling**: Properly handle timezone conversions | |
| - [ ] **User Display**: Format times appropriately for user display | |
| 
 | |
| ### After Time Implementation | |
| 
 | |
| - [ ] **Format Validation**: Verify time formats are correct and consistent | |
| - [ ] **Cross-Platform Testing**: Test time handling across different platforms | |
| - [ ] **Documentation**: Update relevant documentation with time patterns | |
| - [ ] **User Experience**: Confirm time display is clear and user-friendly
 | |
| 
 |