如何DateTime在运行PCL Xamarin.Forms项目时将对象格式化为设备默认日期时间格式的字符串,我的部署目标包括iOS,Android和Windows.
在DateTime.ToShortString()不按要求MSDN根据这方面的工作线程和这个错误.
是否有任何基于表单的解决方案或我是否需要从特定于平台的项目中获取它?
对于Android,我可以使用DI从Native项目执行以下操作:
String format = Settings.System.GetString(this.context.ContentResolver
, Settings.System.DateFormat);
string shortDateString = dateTime.ToString(format);
Run Code Online (Sandbox Code Playgroud)
或者我也可以使用它(以下代码的C#版本):
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(context);
Run Code Online (Sandbox Code Playgroud)
看看这个 SO问题更清楚地了解需求(其仅适用于Android,我希望它在所有平台上,因为这是一个Xamarin.Forms问题).
由于DatePicker和TimePickerXamarin表单以设备格式显示日期和时间,我希望有一种方法可以在PCL中获取它.
DevicePCL中还有一个类,包含平台,习语等信息.
我有一些代码来格式化速记月份名称,见下文,但我需要值始终以英文返回.这个代码目前似乎以某种方式被翻译成适当的语言?
有任何想法吗?非常感谢!
Response.write(myDateTimeValue.ToString("MMM")); // Needs to always return Jan for all languages
Run Code Online (Sandbox Code Playgroud) 我想在sql server中将我的日期时间转换为波斯语日期时间.我的日期时间是MM/DD/YYYY格式.在sql server中是否有任何功能可以执行此操作,因为当我想要hijri datetime时我会使用它
select CONVERT(VARCHAR(40), getdate(), 131) //Output is 14/08/1432 5:02:01:197PM
Run Code Online (Sandbox Code Playgroud)
我正在使用sql server 2008
我确信这是非常基本的,但我无法从系统日期中提取各种时间.简单地说,我不确定为什么我无法使用%M或%S准确提取当前的分钟数和秒数.有什么想法吗?
目前是我的机器下午12:38.
> format(Sys.Date(), "%c")
[1] "12/16/2011 12:00:00 AM"
> R.Version()
$platform
[1] "i386-pc-mingw32"
$arch
[1] "i386"
$os
[1] "mingw32"
$system
[1] "i386, mingw32"
$status
[1] ""
$major
[1] "2"
$minor
[1] "14.0"
$year
[1] "2011"
$month
[1] "10"
$day
[1] "31"
$`svn rev`
[1] "57496"
$language
[1] "R"
$version.string
[1] "R version 2.14.0 (2011-10-31)"
Run Code Online (Sandbox Code Playgroud) 我的程序正在将输入字符串解析为LocalDate对象.在大多数情况下,字符串看起来像30.03.2014,但偶尔看起来像3/30/2014.根据具体情况,我需要使用不同的模式来调用DateTimeFormatter.ofPattern(String pattern).基本上,我需要检查字符串是否与模式匹配,dd.MM.yyyy或者M/dd/yyyy在进行解析之前.
正则表达式的方法类似于:
LocalDate date;
if (dateString.matches("^\\d?\\d/\\d{2}/\\d{4}$")) {
date = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("M/dd/yyyy"));
} else {
date = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("dd.MM.yyyy"));
}
Run Code Online (Sandbox Code Playgroud)
这有效,但在匹配字符串时使用日期模式字符串会很好.
有没有任何标准方法可以使用新的Java 8时间API执行此操作,而无需使用正则表达式匹配?我查看过文档,DateTimeFormatter但找不到任何内容.
我知道有很多关于将字符串转换为datetime已经发布的问题,但是我没有找到任何用于转换字符串的内容20120225143620,包括秒.
我试图不串-ING出每个段,并与串联执行清洁转化/和:.
有没有人有什么建议?
C#使用这样的字符串'dd MMMM yyyy HH:mm'来定义应该显示日期和时间的格式.
在那相当于momentjs是'DD MMMM YYYY HH:mm'.
是否有某些功能可以将一种格式定义转换为另一种格式定义,而不管格式说明符源格式包含哪些(合法)组合?
基本上我想要的是:
function toMomentJsFormatDefinition(cSharpFormatDefinition) {
// should convert all format strings described here https://msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx
}
console.log(toMomentJsFormatDefinition('dd MMMM yyyy HH:mm'));
// outputs DD MMMM YYYY HH:mm
Run Code Online (Sandbox Code Playgroud)
理想情况下toMomentJsFormatDefinition应该在我已经编写并经过良好测试的一些库中定义,我将在我的项目中使用它.
因此,当尝试使用SimpleDateFormat和Date替换一些遗留代码时,要使用java.time.DateTimeFormatter和LocalDate,我遇到了一个问题.两种日期格式不相同.在这一点上,我必须说我知道两种日期类型不一样,但我所处的场景意味着我从不关心时间方面,所以可以忽略它.
public Date getDate(String value) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
try {
return dateFormat.parse(value);
} catch (ParseException e) {
return null;
}
}
public LocalDate getLocalDate(String value) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
try {
return LocalDate.parse(value, formatter);
} catch (DateTimeParseException e) {
return null;
}
}
public void testDates() {
getDate("03/07/2016"); // Sun Jul 03 00:00:00 BST 2016
getDate("3/7/2016"); // Sun Jul 03 00:00:00 BST 2016
getDate("3/7/2016 00:00:00"); // Sun Jul 03 00:00:00 BST 2016
getDate("3/7/2016 00:00:00.0+0100"); // Sun …Run Code Online (Sandbox Code Playgroud) 我必须在Javascript中预先验证一个字符串,该字符串将是c#中的DateTime.DateTime解析使用InvariantCulture.
有谁知道为InvariantCulture定义的DateTime格式?
基本上,我试图将字符串解析为时间戳.
public static void main(String[] args) {
System.out.println("Timestamp:" + DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").parse("20180301050630663"));
}
Run Code Online (Sandbox Code Playgroud)
我有一个例外说
Exception in thread "main" java.time.format.DateTimeParseException: Text '20180301050630663' could not be parsed at index 0
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
at Lob.main(Lob.java:41)
Run Code Online (Sandbox Code Playgroud)
然后我尝试这样做:
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
LocalDateTime timestamp = LocalDateTime.parse("20180301050630663", fmt);
System.out.println("Timestamp:" + timestamp);
Run Code Online (Sandbox Code Playgroud)
并得到了同样的异常错误.
我在这做错了什么?理想情况下,我想将时间戳存储到变量中,并将其与我正在读取的另一个时间戳进行比较.我怎样才能做到这一点?
datetime-format ×10
c# ×4
datetime ×3
java ×3
java-8 ×3
asp.net ×1
asp.net-mvc ×1
java-time ×1
javascript ×1
momentjs ×1
r ×1
sql-server ×1
xamarin ×1