Handling AM and PM in DateTime in Nim - nim-lang

I have a string like this
01/01/2019 8:43:55 AM # dd/MM/yy hh:mm:ss ??
After reading through the docs I concluded that the AM part had no corresponding entry in the formats provided. So that I would have to simply test to see if the string ended in either AM or PM and then adjust the hour part accordingly.
Is there something slicker? I didn't really grasp how to use templates yet, and I notice that the last two methods in the docs mention templates.

I think you are looking for tt (also, your parsing string should be different for the year and the hour):
import times
var dt = parse("01/01/2019 8:43:55 AM", "dd/MM/yyyy H:mm:ss tt")
echo dt
## 2019-01-01T08:43:55+01:00
dt = parse("01/01/2019 8:43:55 PM", "dd/MM/yyyy H:mm:ss tt")
echo dt
## 2019-01-01T20:43:55+01:00

Related

Azure Functions - DateTime parsing "d/MM/yyyy h:mm tt"

I've got string in format e.g. "2/09/2020 12:14 PM"
When I use it in C# code: DateTime.ParseExact(date, "d/MM/yyyy h:mm tt", CultureInfo.GetCultureInfo("en-AU")) everything goes well. But when date string's day is above 9 e.g. "22/09/2020 12:14 PM" I got message String was not recognized as a valid DateTime. In any other enviorment parsing goes well except on Azure Functions. I tried also CultureInfo.InvariantCulture without luck.
Any help would be appreciated.
Try double 'd' instead of one:
DateTime.ParseExact(date, "dd/MM/yyyy h:mm tt", CultureInfo.GetCultureInfo("en-AU"))

C#: conversion of field to month and year format

I have the line of code below
txtCustomers.Text = _myCustList[0].F5Customer.dateActive;
_myCustList[0].F5Customer.dateActive returns : 2/27/2014 12:00:00AM
I want the date format to be in [month , year]
I tried the code below but no luck
txtCustomers.Text = _myCustList[0].F5Customer.dateActive.ToString("MMMM , YYYY");
How can I get it in the [month, year] format.
What is the "month and year" format exactly? Maybe you want the complete month-name and year, then use lowercase yyyy, so "MMMM , yyyy" instead of "MMMM , YYYY":
txtCustomers.Text = _myCustList[0].F5Customer.dateActive.ToString("MMMM , yyyy");
Edit: as commented that property is a string not a DateTime. Why is a property that is called dateActive a string in the first place? I would make it a DateTime property. Otherwise you always have to parse it to a DateTime.
txtCustomers.Text = DateTime.Parse(_myCustList[0].F5Customer.dateActive).ToString("MMMM , yyyy");

Datetime parse exception in C#

I have tried all the ways, however not sure why the string date is not getting converted to datetime.
string windowsTime = "2/21/2009 10:35:14 PM"
DateTime time = DateTime.ParseExact(windowsTime, "MM/dd/yyyy hh:mm:ss tt", null);
I used, DateTime.Parse, ParseExact, Convert.ToDatetime.
But nothing is working, I am getting "String was not recognized as a valid DateTime.".
can somebody advise what am I doing wrong ?
Since the month has only one digit this is correct M.
You also have to use CultureInfo.InvariantCulture instead of null(means current-culture). Otherwise all / will be replaced with the actual date separator of your current culture( for me de-DE it's .):
DateTime time = DateTime.ParseExact(windowsTime, "M/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
Custom date and time format strings: the "/" Custom Format Specifier
as specified in the MSDN
"MM" The month, from 01 through 12. More information: The "MM" Custom
Format Specifier.
Custom Datetime

Convert string to Datetime Exception for 15-07-2013

I am trying to convert string to datetime. But it is giving me exceptioncontibously.
Kindly help.
DateTime dt = Convert.ToDateTime("15-07-2013");
I am getting exception as "String was not recognized as a valid DateTime."
Now i have the string as "15-07-2013 07:12:00 PM"
When i am using the code as mentioned below i am getting exception.
DateTime dtCurrentFile = DateTime.ParseExact("15-07-2013 07:12:00 PM", "dd-MM-yyyy HH:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None);
I am getting the same exception.
Your string format is "dd-MM-yyyy" , but Convert.ToDateTime() default format is "MM-dd-yyyy" . So Options are:
Changing your string format to "07/15/2013"
Forcing the conversion to adapt with it using:
DateTime dt = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy",CultureInfo.InvariantCulture, DateTimeStyles.None);
You can always force the format with DateTime.ParseExact and avoid culture issues with using InvariantCulture:
DateTime dt = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None);
Custom Date and Time Format Strings
However, your code works for me with culture "de-DE".
Update:
You have to use lower hh for the hours when you provide the am/pm designator:
DateTime.ParseExact("15-07-2013 07:12:00 PM", "dd-MM-yyyy hh:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None)
HH means 24h format which makes no sense at all with the AM/PM designator.
try to use ParseExact:
DateTime dt = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy", null);
The problem why you are getting exception is that by default C# supports date time in this format
"MM/dd/yyyy" where as you are trying passing date time is this format "dd-MM-yyyy"
although you can convert using your format but for that you need to tell the compiler your date is in which format so for that you can use
DateTime
myDate = DateTime.ParseExact("15-07-2013", "dd-MM-yyyy",
System.Globalization.CultureInfo.InvariantCulture);

SharePoint 2010 DateTime Culture Format Error

I'm trying to pass a Datetime to SharePoint list. For german datetime format it works, but it needs to be variable so i tried this:
itemsList[i]["FTPDate"] = DateTime.ParseExact(entity.FTPDate.ToString("dd MMM yyyy"), "dd MMM yyyy", Culture);
but I still get an invalid data exception.
What am I doing wrong?
Sharepoint dates are saved according to ISO8061, there is a helper method on the SPUtility class that can convert your datetime to the correct string.
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.createiso8601datetimefromsystemdatetime.aspx

Resources