Appfarm Documentation
Getting startedDocumentationCommunityAppfarm Create
  • Overview
  • Getting Started
    • What is Appfarm?
    • Key concepts
    • Quickstart
      • Speed intro
      • Step-by-step guide
    • Appfarm Showroom
    • FAQ
  • Appcademy
    • Learning paths
    • Appfarm Fundamentals
      • Intro Course
        • 1. Intro to No-Code and Appfarm
        • 2. Navigation in Appfarm Create
        • 3. What is Apps?
        • 4. Intro to UI Editor
        • 5. Data Model
        • 6. App Data
        • 7. Actions
        • 8. Tips and Tricks
        • 9. Intro to practical walkthrough
        • 10. Create a details view of a Project
        • 11. Create a Custom List
        • 12. Swipe and Delete
        • 13. Functionality for simple Create of Data
        • 14. Upload and Download Photos
        • 15. Input Dialog with Validation and Save
        • 16. Dashboard
        • 17. Summary
        • Quiz
      • User Interface Fundamentals
        • Container - Sectioning, Styling and Repeating
        • Conditional Styles
        • Motions
        • Responsive Design
        • Step-by-step workflow
        • Featured UI Components
        • Quiz
      • App Data Fundamentals
        • Data Source Filtering
        • App Variables and Runtime Properties
        • URL Parameters
        • Quiz
      • Actions & Logic Fundamentals
        • Event Handlers
        • Featured Action Nodes
        • Context Parameters
        • Quiz
      • Services Fundamentals
        • Introduction to Services
        • Setting up a Service
        • Scheduling a Service
      • Integration Fundamentals
        • The web request action node
        • Fetch data from an endpoint
        • Map data to a data source
        • Modify the response
        • Nested data mapping
        • Path parameters
        • Authentication
        • Send data to an endpoint
        • Quiz
      • User handling and permissions
        • Users and roles
        • Permissions
        • Creating users
        • Extending the User object class
        • Updating and deleting users
        • Unauthenticated access
        • Quiz
    • Appfarm Professional
      • User Interfaces
        • Featured UI Components
        • Concepts and Use Cases
      • Data Structures & Data Handling
        • Data Features
        • Search & Filters
        • Featured Action Nodes
        • GraphQL
      • Logic & Flow
        • Logical Concepts
        • Date and Time Handling
        • Featured Action Nodes
        • Exception Handling
      • Login & Configuration
        • Login and Authentication
        • Settings, Configuration and Languages
      • Security & Operations
        • Security and Permissions
        • Deployment
        • Schedules and Logs
        • Debugging and App Health
      • Performance & Optimization
        • Optimizing Performance
        • Enhancing Functionality
    • Appfarm Sales Representative
    • Appfarm Developer Forum
      • Session 1: Data Modeling in Appfarm Create
      • Session 2: App Data in Appfarm Create
      • Session 3: Services in Appfarm Create
      • Session 4: Optimizing Performance
    • Background
      • Databases
        • Data modeling 101
        • Database normalization
  • Library
    • UI components
      • Advanced bar chart
      • Advanced bubble chart
      • Advanced combined chart
      • Advanced gantt chart
      • Advanced heatmap chart
      • Advanced line/area chart
      • Advanced pie chart
      • Advanced scatter plot chart
      • Advanced solid gauge chart
      • Animated component
      • Avatar
      • Avatar group
      • Basic bar chart
      • Basic gauge chart
      • Basic line chart
      • Basic pie chart
      • Bottom navigation
      • Button
      • Checkbox
      • Chip group
      • Circular progress
      • Coded component
      • Container
      • Date & time picker
      • Drawable canvas
      • Floating action button
      • Icon
      • Icon button
      • Iframe
      • Image
      • Linear progress
      • List
      • Map
      • Menu list
      • Multi select
      • PDF reader
      • Popover
      • Radio buttons
      • Rich text editor
      • Rich text
      • Select
      • Slider
      • Speed dial
      • Switch
      • Table
      • Tabs
      • Text
      • Text edit
      • View container
      • Visibility group
    • Action nodes
      • Aggregate data
      • Advanced search
      • Auth operations
      • Block
      • Catch exception
      • Copy to clipboard
      • Create file archive
      • Create file object
      • Create object
      • Create user account
      • Delete objects
      • Delete user account
      • Duplicate objects
      • End execution
      • Exit block
      • Exit loop
      • Export data
      • Foreach
      • Generate document
      • If
      • Import data
      • Invalidate cache
      • Log in
      • Log to console
      • Log out
      • Next iteration
      • Navigate
      • Open/close popover
      • Open confirm dialog
      • Open print dialog
      • Open snackbar
      • Open Unsplash dialog
      • Open URL
      • Persist objects
      • Push notifications
      • Read objects
      • Request permissions
      • Run code
      • Run other action
      • Run service
      • Scan barcode/QR code
      • Send email
      • Send SMS
      • Set client language
      • Set data source attributes
      • Set selection
      • Set theme
      • Set user account image
      • Show install app prompt
      • Sleep
      • Sort objects
      • Throw exception
      • Toggle drawer
      • Update object
      • Update secret
      • Update user account
      • Web request
      • While
  • Reference
    • Appfarm Create
      • Appfarm Commander
      • Blue dots
      • Copy & Paste
      • Farmer's Market
      • Find references
      • Find usage
      • Keyboard shortcuts
      • Undo/Redo
      • User preferences
    • Platform concepts
      • Conditions
      • Data bindings
      • Date and time
      • Event handlers
      • Filters
      • Functions
      • Markdown
      • Objects
      • Operators
      • Value processor
    • Dashboard
    • Apps
      • UI
        • Views
          • Dialog
          • Drawer
        • Layout designer
        • Component properties
        • Shareable UI components
      • Data
        • App variables
        • Data sources
        • Calendar data sources
      • Actions
      • App settings
      • App size
      • App health
    • Services
      • Service Endpoints
      • Service settings
      • Service health
      • API explorer
    • Data model
      • Object classes
      • Object class properties
      • Enumerated types
      • GraphQL
        • Queries
        • Mutations
      • Data Extract API
      • Time series data
    • Operations
      • Deploy
      • Schedules
      • Logs
    • Resources
      • Themes
      • Files
      • Fonts
      • Internationalization
    • Configuration
      • Environments
      • Login
        • Custom auth providers
    • Security
      • Users
      • Service accounts
      • Roles
      • Secrets
      • Permissions
        • Conditional Permissions
    • Appfarm Client
      • Developer tools for Apps
      • Developer tools for Services
      • Warnings and errors
  • How to
    • Data modeling
      • Many-to-many relationships
      • Use naming conventions
      • Offline data handling
      • Data silos and White labelling
    • User interface
      • Manage a many-to-many relationship with a Chip group
      • Configure drag and drop
      • Build a drag-and-drop calendar
      • Design a responsive layout
      • Work with flexbox
      • Use Mapbox as a map layer
      • Understand charts
    • Logic and flow
      • Event Log Design
      • Configure advanced search
    • Themes and styling
      • Change the active theme
      • Add custom email templates
    • Enhance your app
      • Add deep links
      • Add keyboard shortcuts
      • Add link previews for social media
      • Apply SEO best practices
      • Change the active language
      • Generate a PDF from a Container
    • Integrations
      • Integrate with external systems
      • Integrate with OpenAI
      • Integrate with Google Analytics (GA4)
      • Configure a custom email account
      • Integrate with a payment provider
      • Integrate with Signicat
      • Integrate directly with an external database
      • Retrieve a Bearer token from Google Cloud
      • Fetch data from BigQuery
      • Retrieve access token from Microsoft Entra ID
    • Workflow automation
      • Update an OAuth 2.0 access token from a service
    • Authentication and access control
      • Add users and assign roles
      • Configure unauthenticated access
      • Implement third-party authentication
    • Security, testing and deployment
      • Add a custom domain
      • Install an app on a device
      • Get ready for Production
      • Optimize performance
      • Security checklist
      • Test and debug
    • Example apps
      • Create an Instagram clone
        • The end result
        • Designing the feed
        • Create new post
        • Add a like-button
        • Add comment-functionality
  • Solution administration
    • Subscription and billing
    • Dedicated tier benefits
    • Guide to GDPR
      • Key principles
      • How Appfarm protects personal data
      • How you can protect your clients’ data
      • Glossary
    • Appfarm and the EU AI Act
  • Policies
    • Appfarm Policies
    • Data Processors
    • Privacy Policy
Powered by GitBook
On this page

Was this helpful?

Export as PDF

Last updated 1 year ago

Was this helpful?

Appfarm Create natively supports the storage of date and time values and provides tools to format, manipulate, and localize these values.

Datetime data type

Datetime is a built-in in Appfarm Create. Datetime values can be stored in or in by adding a property with a data type of Datetime. The same data type is used for the Created Date and Updated Date properties, which are added by default to each .

Datetime values are always stored in UTC and conform to the , with precision down to a millisecond. For example, if use to inspect a data source, you will see datetime values in the following format: 2020-02-08T13:15:00.000Z.

Default behavior

If you display a datetime value in an app, for example by a datetime property to the value of a , the stored UTC value will be converted to local time according to the user's time zone.

This time zone is set automatically from the user's device and stored in the built-in App Time Zone. As you see from this link, you may override the App Time Zone with a single Update Object.

If you wish to override the default behavior and force a specific time zone you can use the to update and assign a specific time zone to the App Time Zone property. This would typically be run in an action triggered by the .

also behave in a similar way. A default time zone is set in but this can be overridden in a request sent to an .

You have a datetime property Order.Delivery Date. If you set Delivery Date to 14:00 on February 8th when using your app (from a computer in the time zone Europe/Oslo), this is stored as 2020-02-08T13:00:00.000Z in the database since Europe/Oslo is UTC+1 at winter time.

If you instead set Delivery Date to 14:00 on June 8th, this will be stored as 2020-06-08T12:00:00.000Z since at that point in time, Europe/Oslo is UTC+2 due to daylight saving time.

In both cases, if you display Order.Delivery Date using a , and the Value to Order.Delivery Date.Hour, it will display "14:00". As described above, this is because apps interpret datetime values stored in the database in the context of the app's current time zone, as stored in the App Time Zone.

By default, datetime values display the date in the format set in the active language (see below). You can also select a fragment of the datetime value to be output, with the following options:

  • Day

  • Day of Month (1-31)

  • Day of Week (ISO, 1-7)

  • Hour (0-23)

  • Minute (0-59)

  • Month (1-12)

  • Month Name

  • Second (0-59)

  • Week Number (ISO)

  • Year

For user entry of dates and times in the client, it is recommended to use the Date Picker component. The Date Picker is customized using your app's theme and ensures a consistent user experience.

The Text Edit component can also be used, with the appropriate Input Data Type selected (Date, Time, Date & Time), although this will leverage the native date picker controls in the user's browser.

Two default datetime values are available throughout Appfarm Create, Date Now and Date Today.

  • Date Now returns the current datetime in UTC.

  • Date Today returns the datetime in UTC that equates to midnight of the current day in the client's timezone.

Value processor

Formatting

The list of formats are as follows, with en-US locale examples. Note that the exact format of the output is determined by the active client language's Calendar Locale.

  • Timestamp (ISO 8601) ("2020-02-08T13:15:09.356Z")

  • Time ("1:15 PM")

  • Short Date ("2/8/2022")

  • Date ("February 8, 2022")

  • Long Date ("February 8, 2022, 1:15 PM GMT+1")

  • From Now (relative time from now: "a day ago", "in a week")

  • To Now (reverse of From Now)

  • Calendar Time ("Yesterday at 2:30 AM")

The formatted string will be returned by the Value processor.

Manipulation

Given a datetime value, the Value processor can add and subtract units and shift the date to the start or end of a unit of time.

To add to, or subtract from a date use the Add and Subtract operations. You can specify the following units:

  • Years

  • Quarters

  • Months

  • Weeks

  • Days

  • Hours

  • Minutes

  • Seconds

  • Milliseconds

To shift a date to the start or end of a unit of time use the Start of and End of operations. This is useful for example if you want to return the 1st of the month for a given date. You can shift the date using the following units:

  • Year

  • Quarter

  • Month

  • Week (Monday-Sunday)

  • Week (Locale dependent)

  • Day

  • Hour

  • Minute

  • Second

The resulting datetime value will be returned by the Value processor.

Function editor and Moment.js

Moment.js allows for extensive date formatting, manipulation, and querying. It is possible to perform all the same actions available in the Value processor and more. Moment also supports method chaining.

When using Moment.js in the Function editor to return a datetime datatype, you must make sure that a simple data type is returned. Returning moment() returns a Moment.js object, not a simple data type. Adding .toJSON() to the expression will convert the moment object to a JSON datetime (the format of Appfarm's datetime datatype). For example: Setting Activity.Due Date to 7 days from now may be done with the function return moment().add(7,'days').toJSON().

Note that return values from functions that use Moment.js can also go through the Value processor for formatting. Simply chain on .toJSON() to return a UTC adjusted value that the Value processor can interpret.

Localization

For each language added to a solution you can select a Calendar Locale and Date Format.

  • Calendar Locale is referenced when displaying datetime related strings, for example "Monday" and "February".

  • Date Format is the default date format that will be applied when displaying a datetime value.

Below is an example of how the two settings work together to format dates:

The can be applied to a datetime value in order to format and/or manipulate the value before it is displayed or stored. It is possible to chain multiple operations within the Value processor.

To format a datetime value using the Value processor in , select a datetime property (not a fragment) or the built-in values Date Now or Date Today. Then, within the Value processor, you can add a Format operation. Choose from the list of pre-defined formats or set a custom format. To set a custom format use the tokens described in the .

Custom (use )

To simplify working with dates in the editor, the external date library Moment.js is available. When you're working within the function editor, add Moment.js from Libraries in the lower left-hand corner and it will be included as a function parameter. By default, the library is given the parameter name "moment" and you use this parameter name to work with your datetime variables.

Refer to the for a full overview of the methods available. Below are a few examples that highlight how the library can be used in the function editor.

The default formatting of a datetime value can be automatically localized by adjusting the settings under .

Calendar Locale
Short Date
Date
Long Date
Moment.js examples
moment().toJSON();
// 2022-02-08T13:15:09.356Z

moment(myDate).format("dddd, MMMM Do YYYY, h:mm:ss a");
// "Sunday, February 14th 2010, 3:25:50 pm"

moment(myDate).format("[Today is] dddd"); 
// "Today is Sunday"

moment(myDate).add(7, 'days').toJSON();
// Calculate the date one week ahead and return as an ISO 8601 string, adjusted to UTC

moment('2010-10-20').isSame('2009-12-31', 'year');
// Check if two dates are the same, with optional granularity

English - Great Britain

07/02/2022

7 February 2022

7 February 2022, 00:00 CET

English - United States

2/7/2022

February 7, 2022

February 7, 2022, 12:00 AM GMT+1

Norsk Bokmål

7.2.2022

7. februar 2022

7. februar 2022, 00:00 CET

  1. Reference
  2. Platform concepts

Date and time

PreviousData bindingsNextEvent handlers
  • Datetime data type
  • Default behavior
  • Value processor
  • Formatting
  • Manipulation
  • Function editor and Moment.js
  • Localization
Value processor
Component properties
Moment.js documentation
Moment.js tokens
function
Moment.js documentation
Internationalization
objects
App variables
object class
ISO-8601 standard
Developer tools
binding
Text component
Update object action node
App variables
Services
Service settings
endpoint
Text component
data bind
Localization
App variable
App variable
On app load event handler
data type