如何返回DateTime而不是字符串以及24小时日期/时间格式

时间:2016-09-08 12:50:08

标签: c#

默认情况下,C#中的DateTime类型以AM / PM格式给出时间,但我想返回24小时时间格式,同时我想返回此DateTime类型而不是下面的字符串,

// sample data:
val processed = sc.parallelize(List(
  (111,List(List(1473163148L, "abc"))),
  (111,List(List(1473163143L,"def"))),
  (111,List(List(1473163143L,"abd"))),
  (111,List(List(1473163139L,"asd"))),
  (111,List(List(1473163696L,"rtf"))),
  (111,List(List(1473163700L,"rgd"))),
  (111,List(List(1473168932L,"dmf"))))
)


// first - find the lowest timsestamp:
// if input isn't ordered:
val firstTimestamp: Long = processed.values.map { case List((l: Long) :: _) => l }.min()

// if input is sorted by timestamp:
val firstTimestamp: Long = processed.first()._2.head.head.toString.toLong

def createGroups(l: List[List[Any]]): Iterable[List[List[Any]]] = {
  // divide the DELTA between each timestamp and first one by 30 minutes to find bucket:
  l.groupBy(t => (firstTimestamp - t.productElement(0).toString.toLong) / (30*60)).values
}

// continue as you did:
val grouped: RDD[(Int, List[List[Any]])] = processed.reduceByKey((x, y) => x ++ y)
val separated: RDD[(Int, List[List[Any]])] = grouped.flatMap {
  case (k, l) => createGroups(l).map(sublist => (k, sublist))
}

separated.foreach(println)
// prints:
// (111,List(List(1473168932, dmf)))
// (111,List(List(1473163148, abc), List(1473163143, def), List(1473163143, abd), List(1473163139, asd), List(1473163696, rtf), List(1473163700, rgd)))

而不是“string timeString24Hour”我想要“DateTime timeString24Hour”

如何实现这一目标???

3 个答案:

答案 0 :(得分:2)

DateTime localTime = DateTime.Now;

这是24小时格式的DateTime类型。 DateTime是一个数字,表示自1970年1月1日以来的所有毫秒数。从中,您可以转换为任何时间段或任何时间段。但是,如果你想使用DateTime,那么在你需要使用

之前,它没有固有的格式
DateTime.Hours/DateTime.DayOfWeek/DateTime.Subtract(antoherDateTime).TotalSeconds

如果您需要24小时格式的时间。只需使用:

DateTime.ToString("HH:mm") 

从这里开始:How to format DateTime to 24 hours time?

答案 1 :(得分:1)

默认情况下,{strong> {/ 1>}在您的文化中的AM / PM中显示。

因为开发环境总是使用当前文化来显示DateTime

enter image description here

但这仅仅是它的显示方式。 DateTime中的值是相同的 - 与文化无关。

顺便DateTime无效,因为"mm/dd/yyyy HH:mm:ss"是分钟而mm是月份

答案 2 :(得分:0)

我认为你想要像String.Format这样的东西:

DateTime localTime = DateTime.Now;
string timeString24Hour = String.Format("{0:dd-MM-yyyy HH:mm:ss.fff}", localTime);

或更短:

string timeString24Hour = String.Format("{0:dd-MM-yyyy HH:mm:ss.fff}", DateTime.Now);

您可以在此处找到信息:MSDN: Custom Date and Time Format Strings